@@ -1,3 +1,4 @@
+# This Build.PL for MooseX-Object-Pluggable was generated by Dist::Zilla::Plugin::ModuleBuildTiny 0.006.
use 5.006;
-use Module::Build::Tiny 0.030;
+use Module::Build::Tiny 0.034;
Build_PL();
@@ -50,12 +50,12 @@ Once installed, here are some dzil commands you might try:
$ dzil test --release
$ dzil xtest
$ dzil listdeps --json
- $ dzil build --not
+ $ dzil build --notgz
You can learn more about Dist::Zilla at http://dzil.org/.
-The code for this distribution is hosted at GitHub. The main repository is:
-https://github.com/moose/MooseX-Object-Pluggable.
+The code for this distribution is hosted at GitHub. The repository is:
+https://github.com/moose/MooseX-Object-Pluggable
You can submit code changes by forking the repository, pushing your code
changes to your clone, and then submitting a pull request. Detailed
instructions for doing that is available here:
@@ -67,8 +67,12 @@ If you have found a bug, but do not have an accompanying patch to fix it, you
can submit an issue report here:
https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Object-Pluggable
or via bug-MooseX-Object-Pluggable@rt.cpan.org.
-This is also a good place to send your questions about the usage of this distribution.
+There is also a mailing list available for users of this distribution, at
+http://lists.perl.org/list/moose.html.
+There is also an irc channel available for users of this distribution, at
+irc://irc.perl.org/#moose.
-This file was generated via Dist::Zilla::Plugin::GenerateFile::ShareDir 0.002 from a
-template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.039.
+
+This file was generated via Dist::Zilla::Plugin::GenerateFile::ShareDir 0.005 from a
+template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.049.
@@ -1,5 +1,13 @@
Revision history for MooseX-Object-Pluggable
+0.0013 2014-02-02 08:53:34Z
+ - line numbers in shipped code are now almost the same (within 3) as
+ the repository source, for easier debugging
+ - add error diagnostic if the plugin is not a Moose role (RT#49507)
+ - avoid continuing on after failing to load a plugin (RT#63013)
+ - keep track of all plugins successfully loaded so far in case we
+ fail in the middle (RT#88562)
+
0.0012 2013-11-11 03:59:19Z
- removed use of deprecated Class::MOP::load_class
- repository migrated from shadowcat to the github moose organization
@@ -1,3 +1,4 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.012.
Build.PL
CONTRIBUTING
Changes
@@ -17,7 +18,7 @@ t/01-basic.t
t/02-basic2.t
t/03-custom-ns.t
t/04-reload.t
-t/boilerplate.t
+t/05-load-failure.t
t/lib/CustomNS/Plugin/Foo.pm
t/lib/TestApp.pm
t/lib/TestApp/Plugin/Bar.pm
@@ -26,9 +27,15 @@ t/lib/TestApp/Plugin/Bor.pm
t/lib/TestApp/Plugin/Foo.pm
t/lib/TestApp2.pm
t/lib/TestApp2/Plugin/Foo.pm
+t/lib/TestApp3.pm
+t/lib/TestApp3/Plugin/Dies1.pm
+t/lib/TestApp3/Plugin/Dies2.pm
+t/lib/TestApp3/Plugin/Lives.pm
+weaver.ini
xt/author/00-compile.t
xt/author/pod-spell.t
xt/release/changes_has_content.t
+xt/release/clean-namespaces.t
xt/release/cpan-changes.t
xt/release/distmeta.t
xt/release/eol.t
@@ -39,5 +46,6 @@ xt/release/no-tabs.t
xt/release/pod-coverage.t
xt/release/pod-no404s.t
xt/release/pod-syntax.t
+xt/release/portability.t
xt/release/test-version.t
xt/release/unused-vars.t
@@ -4,7 +4,7 @@
"Guillermo Roditi <groditi@cpan.org>"
],
"dynamic_config" : 0,
- "generated_by" : "Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830",
+ "generated_by" : "Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.133380",
"license" : [
"perl_5"
],
@@ -17,27 +17,30 @@
"directory" : [
"t",
"xt",
- "examples"
+ "examples",
+ "share"
]
},
"prereqs" : {
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "6.30",
- "Module::Build::Tiny" : "0.030"
+ "Module::Build::Tiny" : "0.034"
}
},
"develop" : {
"recommends" : {
- "Dist::Zilla::PluginBundle::Author::ETHER" : "0.039"
+ "Dist::Zilla::PluginBundle::Author::ETHER" : "0.049"
},
"requires" : {
- "Dist::Zilla" : "5.006",
+ "Dist::Zilla" : "5.012",
"Dist::Zilla::Plugin::ContributorsFromGit" : "0",
"Dist::Zilla::Plugin::GitHub::Update" : "0",
"Dist::Zilla::Plugin::GithubMeta" : "0",
"Dist::Zilla::Plugin::MakeMaker::Fallback" : "0",
+ "Dist::Zilla::Plugin::MetaResources" : "0",
"Dist::Zilla::Plugin::ModuleBuildTiny" : "0.004",
+ "Dist::Zilla::Plugin::Prereqs" : "0",
"Dist::Zilla::PluginBundle::Author::ETHER" : "0.039",
"File::Spec" : "0",
"IO::Handle" : "0",
@@ -46,6 +49,7 @@
"Pod::Weaver::Section::Contributors" : "0",
"Test::CPAN::Changes" : "0.19",
"Test::CPAN::Meta" : "0",
+ "Test::CleanNamespaces" : "0",
"Test::Kwalitee" : "1.12",
"Test::More" : "0.94",
"Test::NoTabs" : "0",
@@ -56,26 +60,31 @@
"runtime" : {
"requires" : {
"Carp" : "0",
- "Class::Load" : "0",
"Module::Pluggable::Object" : "0",
+ "Module::Runtime" : "0",
"Moose::Role" : "0",
+ "Moose::Util" : "0",
"Scalar::Util" : "0",
+ "Try::Tiny" : "0",
+ "namespace::autoclean" : "0",
"perl" : "5.006"
}
},
"test" : {
"recommends" : {
"CPAN::Meta" : "0",
- "CPAN::Meta::Requirements" : "0"
+ "CPAN::Meta::Requirements" : "2.120900"
},
"requires" : {
"ExtUtils::MakeMaker" : "0",
"File::Spec::Functions" : "0",
"List::Util" : "0",
"Moose" : "0",
+ "Test::Fatal" : "0",
"Test::More" : "0",
"lib" : "0",
"strict" : "0",
+ "version" : "0",
"warnings" : "0"
}
}
@@ -83,7 +92,7 @@
"provides" : {
"MooseX::Object::Pluggable" : {
"file" : "lib/MooseX/Object/Pluggable.pm",
- "version" : "0.0012"
+ "version" : "0.0013"
}
},
"release_status" : "stable",
@@ -97,73 +106,95 @@
"type" : "git",
"url" : "https://github.com/moose/MooseX-Object-Pluggable.git",
"web" : "https://github.com/moose/MooseX-Object-Pluggable"
- }
+ },
+ "x_IRC" : "irc://irc.perl.org/#moose",
+ "x_MailingList" : "http://lists.perl.org/list/moose.html"
},
- "version" : "0.0012",
+ "version" : "0.0013",
"x_Dist_Zilla" : {
"perl" : {
- "version" : "5.019005"
+ "version" : "5.019007"
},
"plugins" : [
{
"class" : "Dist::Zilla::Plugin::Git::NextVersion",
"name" : "@Author::ETHER/Git::NextVersion",
- "version" : "2.017"
+ "version" : "2.019"
},
{
"class" : "Dist::Zilla::Plugin::PromptIfStale",
+ "config" : {
+ "Dist::Zilla::Plugin::PromptIfStale" : {
+ "check_all_plugins" : 0,
+ "check_all_prereqs" : 0,
+ "modules" : [
+ "Dist::Zilla::PluginBundle::Author::ETHER"
+ ],
+ "phase" : "build",
+ "skip" : []
+ }
+ },
"name" : "@Author::ETHER/build",
- "version" : "0.012"
+ "version" : "0.015"
},
{
"class" : "Dist::Zilla::Plugin::PromptIfStale",
+ "config" : {
+ "Dist::Zilla::Plugin::PromptIfStale" : {
+ "check_all_plugins" : "1",
+ "check_all_prereqs" : "1",
+ "modules" : [],
+ "phase" : "release",
+ "skip" : []
+ }
+ },
"name" : "@Author::ETHER/release",
- "version" : "0.012"
+ "version" : "0.015"
},
{
"class" : "Dist::Zilla::Plugin::ExecDir",
"name" : "@Author::ETHER/ExecDir",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::ShareDir",
"name" : "@Author::ETHER/ShareDir",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::FileFinder::ByName",
"name" : "@Author::ETHER/Examples",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Git::GatherDir",
"name" : "@Author::ETHER/Git::GatherDir",
- "version" : "2.017"
+ "version" : "2.019"
},
{
"class" : "Dist::Zilla::Plugin::MetaYAML",
"name" : "@Author::ETHER/MetaYAML",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::MetaJSON",
"name" : "@Author::ETHER/MetaJSON",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::License",
"name" : "@Author::ETHER/License",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Readme",
"name" : "@Author::ETHER/Readme",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Manifest",
"name" : "@Author::ETHER/Manifest",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::GenerateFile::ShareDir",
@@ -175,8 +206,8 @@
"source_filename" : "CONTRIBUTING"
}
},
- "name" : "@Author::ETHER/GenerateFile::ShareDir",
- "version" : "0.002"
+ "name" : "@Author::ETHER/generate CONTRIBUTING",
+ "version" : "0.005"
},
{
"class" : "Dist::Zilla::Plugin::Test::Compile",
@@ -193,7 +224,7 @@
}
},
"name" : "@Author::ETHER/Test::Compile",
- "version" : "2.037"
+ "version" : "2.039"
},
{
"class" : "Dist::Zilla::Plugin::Test::NoTabs",
@@ -209,7 +240,7 @@
}
},
"name" : "@Author::ETHER/Test::NoTabs",
- "version" : "0.05"
+ "version" : "0.06"
},
{
"class" : "Dist::Zilla::Plugin::EOLTests",
@@ -219,7 +250,7 @@
{
"class" : "Dist::Zilla::Plugin::MetaTests",
"name" : "@Author::ETHER/MetaTests",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Test::Version",
@@ -249,17 +280,17 @@
{
"class" : "Dist::Zilla::Plugin::PodSyntaxTests",
"name" : "@Author::ETHER/PodSyntaxTests",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::PodCoverageTests",
"name" : "@Author::ETHER/PodCoverageTests",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Test::PodSpelling",
"name" : "@Author::ETHER/Test::PodSpelling",
- "version" : "2.006001"
+ "version" : "2.006002"
},
{
"class" : "Dist::Zilla::Plugin::Test::Pod::No404s",
@@ -279,22 +310,12 @@
{
"class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
"name" : "@Author::ETHER/Test::ReportPrereqs",
- "version" : "0.010"
+ "version" : "0.013"
},
{
- "class" : "Dist::Zilla::Plugin::PruneCruft",
- "name" : "@Author::ETHER/PruneCruft",
- "version" : "5.006"
- },
- {
- "class" : "Dist::Zilla::Plugin::ManifestSkip",
- "name" : "@Author::ETHER/ManifestSkip",
- "version" : "5.006"
- },
- {
- "class" : "Dist::Zilla::Plugin::Authority",
- "name" : "@Author::ETHER/Authority",
- "version" : "1.006"
+ "class" : "Dist::Zilla::Plugin::Test::Portability",
+ "name" : "@Author::ETHER/Test::Portability",
+ "version" : "2.000005"
},
{
"class" : "Dist::Zilla::Plugin::Git::Describe",
@@ -304,7 +325,12 @@
{
"class" : "Dist::Zilla::Plugin::PkgVersion",
"name" : "@Author::ETHER/PkgVersion",
- "version" : "5.006"
+ "version" : "5.012"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Authority",
+ "name" : "@Author::ETHER/Authority",
+ "version" : "1.006"
},
{
"class" : "Dist::Zilla::Plugin::PodWeaver",
@@ -313,21 +339,118 @@
"finder" : [
":InstallModules",
":ExecFiles"
+ ],
+ "plugins" : [
+ {
+ "class" : "Pod::Weaver::Plugin::EnsurePod5",
+ "name" : "@CorePrep/EnsurePod5",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::H1Nester",
+ "name" : "@CorePrep/H1Nester",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::SingleEncoding",
+ "name" : "@Default/SingleEncoding",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Name",
+ "name" : "@Default/Name",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Version",
+ "name" : "@Default/Version",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "@Default/prelude",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "SYNOPSIS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "DESCRIPTION",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "OVERVIEW",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "ATTRIBUTES",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "METHODS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "FUNCTIONS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Leftovers",
+ "name" : "@Default/Leftovers",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "@Default/postlude",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Authors",
+ "name" : "@Default/Authors",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Legal",
+ "name" : "@Default/Legal",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::Transformer",
+ "name" : "-Transformer",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::StopWords",
+ "name" : "-StopWords",
+ "version" : "1.008"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Contributors",
+ "name" : "Contributors",
+ "version" : "0.007"
+ }
]
}
},
"name" : "@Author::ETHER/PodWeaver",
- "version" : "4.001"
+ "version" : "4.005"
},
{
"class" : "Dist::Zilla::Plugin::NextRelease",
"name" : "@Author::ETHER/NextRelease",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
"name" : "@Author::ETHER/ReadmeAnyFromPod",
- "version" : "0.133030"
+ "version" : "0.133360"
},
{
"class" : "Dist::Zilla::Plugin::GithubMeta",
@@ -342,17 +465,23 @@
{
"class" : "Dist::Zilla::Plugin::MetaNoIndex",
"name" : "@Author::ETHER/MetaNoIndex",
- "version" : "5.006"
- },
- {
- "class" : "Dist::Zilla::Plugin::FinderCode",
- "name" : "@Author::ETHER/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::MetaProvides::Package",
"config" : {
- "Dist::Zilla::Plugin::MetaProvides::Package" : {},
+ "Dist::Zilla::Plugin::MetaProvides::Package" : {
+ "finder" : [
+ ":InstallModules"
+ ],
+ "finder_objects" : [
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":InstallModules",
+ "version" : "5.012"
+ }
+ ]
+ },
"Dist::Zilla::Role::MetaProvider::Provider" : {
"inherit_missing" : "1",
"inherit_version" : "1",
@@ -360,17 +489,17 @@
}
},
"name" : "@Author::ETHER/MetaProvides::Package",
- "version" : "1.15000000"
+ "version" : "2.000000"
},
{
"class" : "Dist::Zilla::Plugin::MetaConfig",
"name" : "@Author::ETHER/MetaConfig",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::AutoPrereqs",
"name" : "@Author::ETHER/AutoPrereqs",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs::AuthorDeps",
@@ -391,7 +520,7 @@
}
},
"name" : "@Author::ETHER/installer_requirements",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
@@ -402,32 +531,39 @@
}
},
"name" : "@Author::ETHER/pluginbundle_version",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::RunExtraTests",
"name" : "@Author::ETHER/RunExtraTests",
- "version" : "0.015"
+ "version" : "0.016"
},
{
"class" : "Dist::Zilla::Plugin::MakeMaker::Fallback",
"name" : "@Author::ETHER/MakeMaker::Fallback",
- "version" : "0.003"
+ "version" : "0.006"
},
{
"class" : "Dist::Zilla::Plugin::ModuleBuildTiny",
"name" : "@Author::ETHER/ModuleBuildTiny",
- "version" : "0.005"
+ "version" : "0.006"
},
{
"class" : "Dist::Zilla::Plugin::InstallGuide",
"name" : "@Author::ETHER/InstallGuide",
- "version" : "1.200001"
+ "version" : "1.200002"
},
{
"class" : "Dist::Zilla::Plugin::CheckSelfDependency",
+ "config" : {
+ "Dist::Zilla::Plugin::CheckSelfDependency" : {
+ "finder" : [
+ ":InstallModules"
+ ]
+ }
+ },
"name" : "@Author::ETHER/CheckSelfDependency",
- "version" : "0.005"
+ "version" : "0.007"
},
{
"class" : "Dist::Zilla::Plugin::Run::AfterBuild",
@@ -437,37 +573,42 @@
{
"class" : "Dist::Zilla::Plugin::Git::Check",
"name" : "@Author::ETHER/initial check",
- "version" : "2.017"
+ "version" : "2.019"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts",
+ "name" : "@Author::ETHER/Git::CheckFor::MergeConflicts",
+ "version" : "0.009"
},
{
"class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
"name" : "@Author::ETHER/Git::CheckFor::CorrectBranch",
- "version" : "0.007"
+ "version" : "0.009"
},
{
"class" : "Dist::Zilla::Plugin::Git::Remote::Check",
"name" : "@Author::ETHER/Git::Remote::Check",
- "version" : "0.1.2"
+ "version" : "0.2.0"
},
{
"class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
"name" : "@Author::ETHER/CheckPrereqsIndexed",
- "version" : "0.009"
+ "version" : "0.010"
},
{
"class" : "Dist::Zilla::Plugin::TestRelease",
"name" : "@Author::ETHER/TestRelease",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Git::Check",
"name" : "@Author::ETHER/after tests",
- "version" : "2.017"
+ "version" : "2.019"
},
{
"class" : "Dist::Zilla::Plugin::UploadToCPAN",
"name" : "@Author::ETHER/UploadToCPAN",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::CopyFilesFromRelease",
@@ -477,22 +618,22 @@
{
"class" : "Dist::Zilla::Plugin::Git::Commit",
"name" : "@Author::ETHER/Git::Commit",
- "version" : "2.017"
+ "version" : "2.019"
},
{
"class" : "Dist::Zilla::Plugin::Git::Tag",
"name" : "@Author::ETHER/Git::Tag",
- "version" : "2.017"
+ "version" : "2.019"
},
{
"class" : "Dist::Zilla::Plugin::GitHub::Update",
"name" : "@Author::ETHER/GitHub::Update",
- "version" : "0.35"
+ "version" : "0.36"
},
{
"class" : "Dist::Zilla::Plugin::Git::Push",
"name" : "@Author::ETHER/Git::Push",
- "version" : "2.017"
+ "version" : "2.019"
},
{
"class" : "Dist::Zilla::Plugin::InstallRelease",
@@ -500,9 +641,25 @@
"version" : "0.008"
},
{
+ "class" : "Dist::Zilla::Plugin::Prereqs",
+ "config" : {
+ "Dist::Zilla::Plugin::Prereqs" : {
+ "phase" : "develop",
+ "type" : "requires"
+ }
+ },
+ "name" : "@Author::ETHER/via_options",
+ "version" : "5.012"
+ },
+ {
"class" : "Dist::Zilla::Plugin::ConfirmRelease",
"name" : "@Author::ETHER/ConfirmRelease",
- "version" : "5.006"
+ "version" : "5.012"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MetaResources",
+ "name" : "MetaResources",
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
@@ -512,8 +669,8 @@
"type" : "requires"
}
},
- "name" : "@Author::ETHER/via_options",
- "version" : "5.006"
+ "name" : "DevelopRequires",
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::ContributorsFromGit",
@@ -523,32 +680,42 @@
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":InstallModules",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":IncModules",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":TestFiles",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExecFiles",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ShareFiles",
- "version" : "5.006"
+ "version" : "5.012"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":MainModule",
- "version" : "5.006"
+ "version" : "5.012"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":AllFiles",
+ "version" : "5.012"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":NoFiles",
+ "version" : "5.012"
}
],
"zilla" : {
@@ -556,12 +723,12 @@
"config" : {
"is_trial" : "0"
},
- "version" : "5.006"
+ "version" : "5.012"
}
},
"x_authority" : "cpan:GRODITI",
"x_contributors" : [
- "Guillermo Roditi <groditi@gmail.com>",
+ "David Steinbrunner <dsteinbrunner@pobox.com>",
"Karen Etheridge <ether@cpan.org>",
"Robert Boone <robo4288@gmail.com>",
"Shawn M Moore <sartak@gmail.com>",
@@ -3,97 +3,120 @@ abstract: 'Make your classes pluggable'
author:
- 'Guillermo Roditi <groditi@cpan.org>'
build_requires:
- ExtUtils::MakeMaker: 0
- File::Spec::Functions: 0
- List::Util: 0
- Moose: 0
- Test::More: 0
- lib: 0
- strict: 0
- warnings: 0
+ ExtUtils::MakeMaker: '0'
+ File::Spec::Functions: '0'
+ List::Util: '0'
+ Moose: '0'
+ Test::Fatal: '0'
+ Test::More: '0'
+ lib: '0'
+ strict: '0'
+ version: '0'
+ warnings: '0'
configure_requires:
- ExtUtils::MakeMaker: 6.30
- Module::Build::Tiny: 0.030
+ ExtUtils::MakeMaker: '6.30'
+ Module::Build::Tiny: '0.034'
dynamic_config: 0
-generated_by: 'Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830'
+generated_by: 'Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.133380'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ version: '1.4'
name: MooseX-Object-Pluggable
no_index:
directory:
- t
- xt
- examples
+ - share
provides:
MooseX::Object::Pluggable:
file: lib/MooseX/Object/Pluggable.pm
- version: 0.0012
+ version: '0.0013'
requires:
- Carp: 0
- Class::Load: 0
- Module::Pluggable::Object: 0
- Moose::Role: 0
- Scalar::Util: 0
- perl: 5.006
+ Carp: '0'
+ Module::Pluggable::Object: '0'
+ Module::Runtime: '0'
+ Moose::Role: '0'
+ Moose::Util: '0'
+ Scalar::Util: '0'
+ Try::Tiny: '0'
+ namespace::autoclean: '0'
+ perl: '5.006'
resources:
+ IRC: irc://irc.perl.org/#moose
+ MailingList: http://lists.perl.org/list/moose.html
bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Object-Pluggable
homepage: https://github.com/moose/MooseX-Object-Pluggable
repository: https://github.com/moose/MooseX-Object-Pluggable.git
-version: 0.0012
+version: '0.0013'
x_Dist_Zilla:
perl:
- version: 5.019005
+ version: '5.019007'
plugins:
-
class: Dist::Zilla::Plugin::Git::NextVersion
name: '@Author::ETHER/Git::NextVersion'
- version: 2.017
+ version: '2.019'
-
class: Dist::Zilla::Plugin::PromptIfStale
+ config:
+ Dist::Zilla::Plugin::PromptIfStale:
+ check_all_plugins: 0
+ check_all_prereqs: 0
+ modules:
+ - Dist::Zilla::PluginBundle::Author::ETHER
+ phase: build
+ skip: []
name: '@Author::ETHER/build'
- version: 0.012
+ version: '0.015'
-
class: Dist::Zilla::Plugin::PromptIfStale
+ config:
+ Dist::Zilla::Plugin::PromptIfStale:
+ check_all_plugins: '1'
+ check_all_prereqs: '1'
+ modules: []
+ phase: release
+ skip: []
name: '@Author::ETHER/release'
- version: 0.012
+ version: '0.015'
-
class: Dist::Zilla::Plugin::ExecDir
name: '@Author::ETHER/ExecDir'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::ShareDir
name: '@Author::ETHER/ShareDir'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::FileFinder::ByName
name: '@Author::ETHER/Examples'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Git::GatherDir
name: '@Author::ETHER/Git::GatherDir'
- version: 2.017
+ version: '2.019'
-
class: Dist::Zilla::Plugin::MetaYAML
name: '@Author::ETHER/MetaYAML'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::MetaJSON
name: '@Author::ETHER/MetaJSON'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::License
name: '@Author::ETHER/License'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Readme
name: '@Author::ETHER/Readme'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Manifest
name: '@Author::ETHER/Manifest'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::GenerateFile::ShareDir
config:
@@ -102,8 +125,8 @@ x_Dist_Zilla:
dist: Dist-Zilla-PluginBundle-Author-ETHER
encoding: UTF-8
source_filename: CONTRIBUTING
- name: '@Author::ETHER/GenerateFile::ShareDir'
- version: 0.002
+ name: '@Author::ETHER/generate CONTRIBUTING'
+ version: '0.005'
-
class: Dist::Zilla::Plugin::Test::Compile
config:
@@ -115,7 +138,7 @@ x_Dist_Zilla:
- ':ExecFiles'
- '@Author::ETHER/Examples'
name: '@Author::ETHER/Test::Compile'
- version: 2.037
+ version: '2.039'
-
class: Dist::Zilla::Plugin::Test::NoTabs
config:
@@ -126,83 +149,79 @@ x_Dist_Zilla:
- ':ExecFiles'
- '@Author::ETHER/Examples'
name: '@Author::ETHER/Test::NoTabs'
- version: 0.05
+ version: '0.06'
-
class: Dist::Zilla::Plugin::EOLTests
name: '@Author::ETHER/EOLTests'
- version: 0.02
+ version: '0.02'
-
class: Dist::Zilla::Plugin::MetaTests
name: '@Author::ETHER/MetaTests'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Test::Version
name: '@Author::ETHER/Test::Version'
- version: 0.002004
+ version: '0.002004'
-
class: Dist::Zilla::Plugin::Test::CPAN::Changes
name: '@Author::ETHER/Test::CPAN::Changes'
- version: 0.008
+ version: '0.008'
-
class: Dist::Zilla::Plugin::Test::ChangesHasContent
name: '@Author::ETHER/Test::ChangesHasContent'
- version: 0.006
+ version: '0.006'
-
class: Dist::Zilla::Plugin::Test::UnusedVars
name: '@Author::ETHER/Test::UnusedVars'
- version: 2.000005
+ version: '2.000005'
-
class: Dist::Zilla::Plugin::Test::MinimumVersion
name: '@Author::ETHER/Test::MinimumVersion'
- version: 2.000005
+ version: '2.000005'
-
class: Dist::Zilla::Plugin::PodSyntaxTests
name: '@Author::ETHER/PodSyntaxTests'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::PodCoverageTests
name: '@Author::ETHER/PodCoverageTests'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Test::PodSpelling
name: '@Author::ETHER/Test::PodSpelling'
- version: 2.006001
+ version: '2.006002'
-
class: Dist::Zilla::Plugin::Test::Pod::No404s
name: '@Author::ETHER/Test::Pod::No404s'
- version: 1.001
+ version: '1.001'
-
class: Dist::Zilla::Plugin::Test::Kwalitee
name: '@Author::ETHER/Test::Kwalitee'
- version: 2.07
+ version: '2.07'
-
class: Dist::Zilla::Plugin::MojibakeTests
name: '@Author::ETHER/MojibakeTests'
- version: 0.5
+ version: '0.5'
-
class: Dist::Zilla::Plugin::Test::ReportPrereqs
name: '@Author::ETHER/Test::ReportPrereqs'
- version: 0.010
- -
- class: Dist::Zilla::Plugin::PruneCruft
- name: '@Author::ETHER/PruneCruft'
- version: 5.006
- -
- class: Dist::Zilla::Plugin::ManifestSkip
- name: '@Author::ETHER/ManifestSkip'
- version: 5.006
+ version: '0.013'
-
- class: Dist::Zilla::Plugin::Authority
- name: '@Author::ETHER/Authority'
- version: 1.006
+ class: Dist::Zilla::Plugin::Test::Portability
+ name: '@Author::ETHER/Test::Portability'
+ version: '2.000005'
-
class: Dist::Zilla::Plugin::Git::Describe
name: '@Author::ETHER/Git::Describe'
- version: 0.003
+ version: '0.003'
-
class: Dist::Zilla::Plugin::PkgVersion
name: '@Author::ETHER/PkgVersion'
- version: 5.006
+ version: '5.012'
+ -
+ class: Dist::Zilla::Plugin::Authority
+ name: '@Author::ETHER/Authority'
+ version: '1.006'
-
class: Dist::Zilla::Plugin::PodWeaver
config:
@@ -210,58 +229,138 @@ x_Dist_Zilla:
finder:
- ':InstallModules'
- ':ExecFiles'
+ plugins:
+ -
+ class: Pod::Weaver::Plugin::EnsurePod5
+ name: '@CorePrep/EnsurePod5'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Plugin::H1Nester
+ name: '@CorePrep/H1Nester'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Plugin::SingleEncoding
+ name: '@Default/SingleEncoding'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Name
+ name: '@Default/Name'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Version
+ name: '@Default/Version'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Region
+ name: '@Default/prelude'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: SYNOPSIS
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: DESCRIPTION
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: OVERVIEW
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Collect
+ name: ATTRIBUTES
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Collect
+ name: METHODS
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Collect
+ name: FUNCTIONS
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Leftovers
+ name: '@Default/Leftovers'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Region
+ name: '@Default/postlude'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Authors
+ name: '@Default/Authors'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Legal
+ name: '@Default/Legal'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Plugin::Transformer
+ name: -Transformer
+ version: '4.006'
+ -
+ class: Pod::Weaver::Plugin::StopWords
+ name: -StopWords
+ version: '1.008'
+ -
+ class: Pod::Weaver::Section::Contributors
+ name: Contributors
+ version: '0.007'
name: '@Author::ETHER/PodWeaver'
- version: 4.001
+ version: '4.005'
-
class: Dist::Zilla::Plugin::NextRelease
name: '@Author::ETHER/NextRelease'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::ReadmeAnyFromPod
name: '@Author::ETHER/ReadmeAnyFromPod'
- version: 0.133030
+ version: '0.133360'
-
class: Dist::Zilla::Plugin::GithubMeta
name: '@Author::ETHER/GithubMeta'
- version: 0.42
+ version: '0.42'
-
class: Dist::Zilla::Plugin::AutoMetaResources
name: '@Author::ETHER/AutoMetaResources'
- version: 1.20
+ version: '1.20'
-
class: Dist::Zilla::Plugin::MetaNoIndex
name: '@Author::ETHER/MetaNoIndex'
- version: 5.006
- -
- class: Dist::Zilla::Plugin::FinderCode
- name: '@Author::ETHER/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::MetaProvides::Package
config:
- Dist::Zilla::Plugin::MetaProvides::Package: {}
+ Dist::Zilla::Plugin::MetaProvides::Package:
+ finder:
+ - ':InstallModules'
+ finder_objects:
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':InstallModules'
+ version: '5.012'
Dist::Zilla::Role::MetaProvider::Provider:
- inherit_missing: 1
- inherit_version: 1
- meta_noindex: 1
+ inherit_missing: '1'
+ inherit_version: '1'
+ meta_noindex: '1'
name: '@Author::ETHER/MetaProvides::Package'
- version: 1.15000000
+ version: '2.000000'
-
class: Dist::Zilla::Plugin::MetaConfig
name: '@Author::ETHER/MetaConfig'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::AutoPrereqs
name: '@Author::ETHER/AutoPrereqs'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Prereqs::AuthorDeps
name: '@Author::ETHER/Prereqs::AuthorDeps'
- version: 0.002
+ version: '0.002'
-
class: Dist::Zilla::Plugin::MinimumPerl
name: '@Author::ETHER/MinimumPerl'
- version: 1.003
+ version: '1.003'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -269,7 +368,7 @@ x_Dist_Zilla:
phase: develop
type: requires
name: '@Author::ETHER/installer_requirements'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -277,131 +376,159 @@ x_Dist_Zilla:
phase: develop
type: recommends
name: '@Author::ETHER/pluginbundle_version'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::RunExtraTests
name: '@Author::ETHER/RunExtraTests'
- version: 0.015
+ version: '0.016'
-
class: Dist::Zilla::Plugin::MakeMaker::Fallback
name: '@Author::ETHER/MakeMaker::Fallback'
- version: 0.003
+ version: '0.006'
-
class: Dist::Zilla::Plugin::ModuleBuildTiny
name: '@Author::ETHER/ModuleBuildTiny'
- version: 0.005
+ version: '0.006'
-
class: Dist::Zilla::Plugin::InstallGuide
name: '@Author::ETHER/InstallGuide'
- version: 1.200001
+ version: '1.200002'
-
class: Dist::Zilla::Plugin::CheckSelfDependency
+ config:
+ Dist::Zilla::Plugin::CheckSelfDependency:
+ finder:
+ - ':InstallModules'
name: '@Author::ETHER/CheckSelfDependency'
- version: 0.005
+ version: '0.007'
-
class: Dist::Zilla::Plugin::Run::AfterBuild
name: '@Author::ETHER/Run::AfterBuild'
- version: 0.020
+ version: '0.020'
-
class: Dist::Zilla::Plugin::Git::Check
name: '@Author::ETHER/initial check'
- version: 2.017
+ version: '2.019'
+ -
+ class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts
+ name: '@Author::ETHER/Git::CheckFor::MergeConflicts'
+ version: '0.009'
-
class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
name: '@Author::ETHER/Git::CheckFor::CorrectBranch'
- version: 0.007
+ version: '0.009'
-
class: Dist::Zilla::Plugin::Git::Remote::Check
name: '@Author::ETHER/Git::Remote::Check'
- version: 0.1.2
+ version: 0.2.0
-
class: Dist::Zilla::Plugin::CheckPrereqsIndexed
name: '@Author::ETHER/CheckPrereqsIndexed'
- version: 0.009
+ version: '0.010'
-
class: Dist::Zilla::Plugin::TestRelease
name: '@Author::ETHER/TestRelease'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Git::Check
name: '@Author::ETHER/after tests'
- version: 2.017
+ version: '2.019'
-
class: Dist::Zilla::Plugin::UploadToCPAN
name: '@Author::ETHER/UploadToCPAN'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::CopyFilesFromRelease
name: '@Author::ETHER/CopyFilesFromRelease'
- version: 0.001
+ version: '0.001'
-
class: Dist::Zilla::Plugin::Git::Commit
name: '@Author::ETHER/Git::Commit'
- version: 2.017
+ version: '2.019'
-
class: Dist::Zilla::Plugin::Git::Tag
name: '@Author::ETHER/Git::Tag'
- version: 2.017
+ version: '2.019'
-
class: Dist::Zilla::Plugin::GitHub::Update
name: '@Author::ETHER/GitHub::Update'
- version: 0.35
+ version: '0.36'
-
class: Dist::Zilla::Plugin::Git::Push
name: '@Author::ETHER/Git::Push'
- version: 2.017
+ version: '2.019'
-
class: Dist::Zilla::Plugin::InstallRelease
name: '@Author::ETHER/InstallRelease'
- version: 0.008
+ version: '0.008'
+ -
+ class: Dist::Zilla::Plugin::Prereqs
+ config:
+ Dist::Zilla::Plugin::Prereqs:
+ phase: develop
+ type: requires
+ name: '@Author::ETHER/via_options'
+ version: '5.012'
-
class: Dist::Zilla::Plugin::ConfirmRelease
name: '@Author::ETHER/ConfirmRelease'
- version: 5.006
+ version: '5.012'
+ -
+ class: Dist::Zilla::Plugin::MetaResources
+ name: MetaResources
+ version: '5.012'
-
class: Dist::Zilla::Plugin::Prereqs
config:
Dist::Zilla::Plugin::Prereqs:
phase: develop
type: requires
- name: '@Author::ETHER/via_options'
- version: 5.006
+ name: DevelopRequires
+ version: '5.012'
-
class: Dist::Zilla::Plugin::ContributorsFromGit
name: ContributorsFromGit
- version: 0.006
+ version: '0.006'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':InstallModules'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':IncModules'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':TestFiles'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ExecFiles'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ShareFiles'
- version: 5.006
+ version: '5.012'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':MainModule'
- version: 5.006
+ version: '5.012'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':AllFiles'
+ version: '5.012'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':NoFiles'
+ version: '5.012'
zilla:
class: Dist::Zilla::Dist::Builder
config:
- is_trial: 0
- version: 5.006
+ is_trial: '0'
+ version: '5.012'
x_authority: cpan:GRODITI
x_contributors:
- - 'Guillermo Roditi <groditi@gmail.com>'
+ - 'David Steinbrunner <dsteinbrunner@pobox.com>'
- 'Karen Etheridge <ether@cpan.org>'
- 'Robert Boone <robo4288@gmail.com>'
- 'Shawn M Moore <sartak@gmail.com>'
@@ -1,6 +1,7 @@
# This Makefile.PL for MooseX-Object-Pluggable was generated by
-# Dist::Zilla::Plugin::MakeMaker::Fallback 0.003.
-# Don't edit it but the dist.ini used to construct it.
+# Dist::Zilla::Plugin::MakeMaker::Fallback 0.006
+# and Dist::Zilla::Plugin::MakeMaker::Awesome 0.19.
+# Don't edit it but the dist.ini and plugins used to construct it.
use strict;
use warnings;
@@ -8,7 +9,7 @@ use warnings;
BEGIN {
my %configure_requires = (
'ExtUtils::MakeMaker' => '6.30',
- 'Module::Build::Tiny' => '0.030',
+ 'Module::Build::Tiny' => '0.034',
);
my @missing = grep {
@@ -21,10 +22,10 @@ if (not @missing)
}
else
{
- warn <<'EOW';
+ $ENV{PERL_MM_FALLBACK_SILENCE_WARNING} or warn <<'EOW';
*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***
-If you're seeing this warning, your toolchain is really, really old and you'll
+If you're seeing this warning, your toolchain is really, really old* and you'll
almost certainly have problems installing CPAN modules from this century. But
never fear, dear user, for we have the technology to fix this!
@@ -45,9 +46,18 @@ when present instead.
This public service announcement was brought to you by the Perl Toolchain
Gang, the irc.perl.org #toolchain IRC channel, and the number 42.
+----
+
+* Alternatively, you are doing something overly clever, in which case you
+should consider setting the 'prefer_installer' config option in CPAN.pm, or
+'prefer_makefile' in CPANPLUS, to 'mb" and '0' respectively.
+
+You can also silence this warning for future installations by setting the
+PERL_MM_FALLBACK_SILENCE_WARNING environment variable.
+
EOW
- sleep 10 if -t STDIN;
+ sleep 10 if -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
}
}
@@ -63,7 +73,7 @@ my %WriteMakefileArgs = (
"BUILD_REQUIRES" => {},
"CONFIGURE_REQUIRES" => {
"ExtUtils::MakeMaker" => "6.30",
- "Module::Build::Tiny" => "0.030"
+ "Module::Build::Tiny" => "0.034"
},
"DISTNAME" => "MooseX-Object-Pluggable",
"EXE_FILES" => [],
@@ -71,52 +81,59 @@ my %WriteMakefileArgs = (
"NAME" => "MooseX::Object::Pluggable",
"PREREQ_PM" => {
"Carp" => 0,
- "Class::Load" => 0,
"Module::Pluggable::Object" => 0,
+ "Module::Runtime" => 0,
"Moose::Role" => 0,
- "Scalar::Util" => 0
+ "Moose::Util" => 0,
+ "Scalar::Util" => 0,
+ "Try::Tiny" => 0,
+ "namespace::autoclean" => 0
},
"TEST_REQUIRES" => {
"ExtUtils::MakeMaker" => 0,
"File::Spec::Functions" => 0,
"List::Util" => 0,
"Moose" => 0,
+ "Test::Fatal" => 0,
"Test::More" => 0,
"lib" => 0,
"strict" => 0,
+ "version" => 0,
"warnings" => 0
},
- "VERSION" => "0.0012",
+ "VERSION" => "0.0013",
"test" => {
"TESTS" => "t/*.t"
}
);
-unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
- my $tr = delete $WriteMakefileArgs{TEST_REQUIRES};
- my $br = $WriteMakefileArgs{BUILD_REQUIRES};
- for my $mod ( keys %$tr ) {
- if ( exists $br->{$mod} ) {
- $br->{$mod} = $tr->{$mod} if $tr->{$mod} > $br->{$mod};
- }
- else {
- $br->{$mod} = $tr->{$mod};
- }
- }
-}
+my %FallbackPrereqs = (
+ "Carp" => 0,
+ "ExtUtils::MakeMaker" => 0,
+ "File::Spec::Functions" => 0,
+ "List::Util" => 0,
+ "Module::Pluggable::Object" => 0,
+ "Module::Runtime" => 0,
+ "Moose" => 0,
+ "Moose::Role" => 0,
+ "Moose::Util" => 0,
+ "Scalar::Util" => 0,
+ "Test::Fatal" => 0,
+ "Test::More" => 0,
+ "Try::Tiny" => 0,
+ "lib" => 0,
+ "namespace::autoclean" => 0,
+ "strict" => 0,
+ "version" => 0,
+ "warnings" => 0
+);
-unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
- my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
- my $pp = $WriteMakefileArgs{PREREQ_PM};
- for my $mod ( keys %$br ) {
- if ( exists $pp->{$mod} ) {
- $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
- }
- else {
- $pp->{$mod} = $br->{$mod};
- }
- }
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+ delete $WriteMakefileArgs{TEST_REQUIRES};
+ delete $WriteMakefileArgs{BUILD_REQUIRES};
+ $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
@@ -1,7 +1,7 @@
This archive contains the distribution MooseX-Object-Pluggable,
-version 0.0012:
+version 0.0013:
Make your classes pluggable
@@ -11,3 +11,5 @@ This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
+This README file was generated by Dist::Zilla::Plugin::Readme v5.012.
+
@@ -4,7 +4,7 @@ MooseX::Object::Pluggable - Make your classes pluggable
# VERSION
-version 0.0012
+version 0.0013
# SYNOPSIS
@@ -30,8 +30,8 @@ version 0.0012
# DESCRIPTION
-This module is meant to be loaded as a role from Moose-based classes
-it will add five methods and four attributes to assist you with the loading
+This module is meant to be loaded as a role from Moose-based classes.
+It will add five methods and four attributes to assist you with the loading
and handling of plugins and extensions for plugins. I understand that this may
pollute your namespace, however I took great care in using the least ambiguous
names possible.
@@ -44,13 +44,13 @@ one instance of a class they can all have different plugins loaded. This is a fe
Plugin methods are allowed to `around`, `before`, `after`
their consuming classes, so it is important to watch for load order as plugins can
-and will overload each other. You may also add attributes through has.
+and will overload each other. You may also add attributes through `has`.
Please note that when you load at runtime you lose the ability to wrap `BUILD`
and roles using `has` will not go through compile time checks like `required`
-and <default>.
+and `default`.
-Even though `override` will work , I STRONGLY discourage it's use
+Even though `override` will work, I __STRONGLY__ discourage its use
and a warning will be thrown if you try to use it.
This is closely linked to the way multiple roles being applied is handled and is not
likely to change. `override` behavior is closely linked to inheritance and thus will
@@ -60,7 +60,8 @@ save yourself the headache.
# How plugins are loaded
When roles are applied at runtime an anonymous class will wrap your class and
-`$self->blessed` and `ref $self` will no longer return the name of your object,
+`$self->blessed`, `ref $self` and `$self->meta->name`
+will no longer return the name of your object;
they will instead return the name of the anonymous class created at runtime.
See `_original_class_name`.
@@ -72,24 +73,25 @@ For a simple example see the tests included in this distribution.
## \_plugin\_ns
-String. The prefix to use for plugin names provided. MyApp::Plugin is sensible.
+String. The prefix to use for plugin names provided. `MyApp::Plugin` is sensible.
## \_plugin\_app\_ns
-ArrayRef, Accessor automatically dereferences into array on a read call.
-By default will be filled with the class name and its precedents, it is used
+An ArrayRef accessor that automatically dereferences into array on a read call.
+By default it will be filled with the class name and its precedents. It is used
to determine which directories to look for plugins as well as which plugins
take precedence upon namespace collisions. This allows you to subclass a pluggable
-class and still use it's plugins while using yours first if they are available.
+class and still use its plugins while using yours first if they are available.
## \_plugin\_locator
-An automatically built instance of [Module::Pluggable::Object](http://search.cpan.org/perldoc?Module::Pluggable::Object) used to locate
+An automatically built instance of [Module::Pluggable::Object](https://metacpan.org/pod/Module::Pluggable::Object) used to locate
available plugins.
## \_original\_class\_name
-Because of the way roles apply `$self->blessed` and `ref $self` will
+Because of the way roles apply, `$self->blessed`, `ref $self`
+and `$self->meta->name` will
no longer return what you expect. Instead, upon instantiation, the name of the
class instantiated will be stored in this attribute if you need to access the
name the class held before any runtime roles were applied.
@@ -130,16 +132,16 @@ class precedence list that are not part of Moose.
## \_build\_plugin\_locator
-Automatically creates a [Module::Pluggable::Object](http://search.cpan.org/perldoc?Module::Pluggable::Object) instance with the correct
+Automatically creates a [Module::Pluggable::Object](https://metacpan.org/pod/Module::Pluggable::Object) instance with the correct
search\_path.
## meta
-Keep tests happy. See [Moose](http://search.cpan.org/perldoc?Moose)
+Keep tests happy. See [Moose](https://metacpan.org/pod/Moose)
# SEE ALSO
-[Moose](http://search.cpan.org/perldoc?Moose), [Moose::Role](http://search.cpan.org/perldoc?Moose::Role), [Class::Inspector](http://search.cpan.org/perldoc?Class::Inspector)
+[Moose](https://metacpan.org/pod/Moose), [Moose::Role](https://metacpan.org/pod/Moose::Role), [Class::Inspector](https://metacpan.org/pod/Class::Inspector)
# BUGS
@@ -177,7 +179,7 @@ You can also look for information at:
# ACKNOWLEDGEMENTS
-- \#Moose - Huge number of questions
+- #Moose - Huge number of questions
- Matt S Trout <mst@shadowcatsystems.co.uk> - ideas / planning.
- Stevan Little - EVERYTHING. Without him this would have never happened.
- Shawn M Moore - bugfixes
@@ -192,3 +194,12 @@ This software is copyright (c) 2007 by Guillermo Roditi <groditi@cpan.org>.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
+
+# CONTRIBUTORS
+
+- David Steinbrunner <dsteinbrunner@pobox.com>
+- Karen Etheridge <ether@cpan.org>
+- Robert Boone <robo4288@gmail.com>
+- Shawn M Moore <sartak@gmail.com>
+- Todd Hepler <thepler@employees.org>
+- Yuval Kogman <nothingmuch@woobling.org>
@@ -8,7 +8,16 @@ copyright_year = 2007
:version = 0.039
server = github
Authority.authority = cpan:GRODITI
+AutoPrereqs.skip = TestApp3::Missing
+[MetaResources]
+x_IRC = irc://irc.perl.org/#moose
+x_MailingList = http://lists.perl.org/list/moose.html
+
+[Prereqs / DevelopRequires]
+Test::CleanNamespaces = 0
+
+; authordep Pod::Weaver 4
; authordep Pod::Weaver::Section::Contributors
[ContributorsFromGit]
@@ -1,20 +1,113 @@
package MooseX::Object::Pluggable;
-{
- $MooseX::Object::Pluggable::VERSION = '0.0012';
-}
-# git description: v0.0011-6-g98105e4
-
BEGIN {
$MooseX::Object::Pluggable::AUTHORITY = 'cpan:GRODITI';
}
+# git description: v0.0012-15-gff720b0
+$MooseX::Object::Pluggable::VERSION = '0.0013';
# ABSTRACT: Make your classes pluggable
use Carp;
use Moose::Role;
-use Class::Load 'load_class';
+use Module::Runtime 'use_module';
use Scalar::Util 'blessed';
+use Try::Tiny;
use Module::Pluggable::Object;
-
+use Moose::Util 'find_meta';
+use namespace::autoclean;
+
+# =head1 SYNOPSIS
+#
+# package MyApp;
+# use Moose;
+#
+# with 'MooseX::Object::Pluggable';
+#
+# ...
+#
+# package MyApp::Plugin::Pretty;
+# use Moose::Role;
+#
+# sub pretty{ print "I am pretty" }
+#
+# 1;
+#
+# #
+# use MyApp;
+# my $app = MyApp->new;
+# $app->load_plugin('Pretty');
+# $app->pretty;
+#
+# =head1 DESCRIPTION
+#
+# This module is meant to be loaded as a role from Moose-based classes.
+# It will add five methods and four attributes to assist you with the loading
+# and handling of plugins and extensions for plugins. I understand that this may
+# pollute your namespace, however I took great care in using the least ambiguous
+# names possible.
+#
+# =head1 How plugins Work
+#
+# Plugins and extensions are just Roles by a fancy name. They are loaded at runtime
+# on demand and are instance, not class based. This means that if you have more than
+# one instance of a class they can all have different plugins loaded. This is a feature.
+#
+# Plugin methods are allowed to C<around>, C<before>, C<after>
+# their consuming classes, so it is important to watch for load order as plugins can
+# and will overload each other. You may also add attributes through C<has>.
+#
+# Please note that when you load at runtime you lose the ability to wrap C<BUILD>
+# and roles using C<has> will not go through compile time checks like C<required>
+# and C<default>.
+#
+# Even though C<override> will work, I B<STRONGLY> discourage its use
+# and a warning will be thrown if you try to use it.
+# This is closely linked to the way multiple roles being applied is handled and is not
+# likely to change. C<override> behavior is closely linked to inheritance and thus will
+# likely not work as you expect it in multiple inheritance situations. Point being,
+# save yourself the headache.
+#
+# =head1 How plugins are loaded
+#
+# When roles are applied at runtime an anonymous class will wrap your class and
+# C<< $self->blessed >>, C<< ref $self >> and C<< $self->meta->name >>
+# will no longer return the name of your object;
+# they will instead return the name of the anonymous class created at runtime.
+# See C<_original_class_name>.
+#
+# =head1 Usage
+#
+# For a simple example see the tests included in this distribution.
+#
+# =head1 Attributes
+#
+# =head2 _plugin_ns
+#
+# String. The prefix to use for plugin names provided. C<MyApp::Plugin> is sensible.
+#
+# =head2 _plugin_app_ns
+#
+# An ArrayRef accessor that automatically dereferences into array on a read call.
+# By default it will be filled with the class name and its precedents. It is used
+# to determine which directories to look for plugins as well as which plugins
+# take precedence upon namespace collisions. This allows you to subclass a pluggable
+# class and still use its plugins while using yours first if they are available.
+#
+# =head2 _plugin_locator
+#
+# An automatically built instance of L<Module::Pluggable::Object> used to locate
+# available plugins.
+#
+# =head2 _original_class_name
+#
+# =for stopwords instantiation
+#
+# Because of the way roles apply, C<< $self->blessed >>, C<< ref $self >>
+# and C<< $self->meta->name >> will
+# no longer return what you expect. Instead, upon instantiation, the name of the
+# class instantiated will be stored in this attribute if you need to access the
+# name the class held before any runtime roles were applied.
+#
+# =cut
#--------#---------#---------#---------#---------#---------#---------#---------#
@@ -61,23 +154,34 @@ has _plugin_locator => (
#--------#---------#---------#---------#---------#---------#---------#---------#
+# =head1 Public Methods
+#
+# =head2 load_plugins @plugins
+#
+# =head2 load_plugin $plugin
+#
+# Load the appropriate role for C<$plugin>.
+#
+# =cut
sub load_plugins {
my ($self, @plugins) = @_;
die("You must provide a plugin name") unless @plugins;
my $loaded = $self->_plugin_loaded;
- my @load = grep { not exists $loaded->{$_} } @plugins;
- my @roles = map { $self->_role_from_plugin($_) } @load;
+ @plugins = grep { not exists $loaded->{$_} } @plugins;
+
+ return if @plugins == 0;
- return if @roles == 0;
+ foreach my $plugin (@plugins)
+ {
+ my $role = $self->_role_from_plugin($plugin);
+ return if not $self->_load_and_apply_role($role);
- if ( $self->_load_and_apply_role(@roles) ) {
- @{ $loaded }{@load} = @roles;
- return 1;
- } else {
- return;
+ $loaded->{$plugin} = $role;
}
+
+ return 1;
}
@@ -86,6 +190,23 @@ sub load_plugin {
$self->load_plugins(@_);
}
+# =head1 Private Methods
+#
+# There's nothing stopping you from using these, but if you are using them
+# for anything that's not really complicated you are probably doing
+# something wrong.
+#
+# =head2 _role_from_plugin $plugin
+#
+# Creates a role name from a plugin name. If the plugin name is prepended
+# with a C<+> it will be treated as a full name returned as is. Otherwise
+# a string consisting of C<$plugin> prepended with the C<_plugin_ns>
+# and the first valid value from C<_plugin_app_ns> will be returned. Example
+#
+# #assuming appname MyApp and C<_plugin_ns> 'Plugin'
+# $self->_role_from_plugin("MyPlugin"); # MyApp::Plugin::MyPlugin
+#
+# =cut
sub _role_from_plugin{
my ($self, $plugin) = @_;
@@ -100,32 +221,45 @@ sub _role_from_plugin{
return $roles[0] if @roles == 1;
my $i = 0;
- my %presedence_list = map{ $i++; "${_}::${o}", $i } $self->_plugin_app_ns;
+ my %precedence_list = map{ $i++; "${_}::${o}", $i } $self->_plugin_app_ns;
- @roles = sort{ $presedence_list{$a} <=> $presedence_list{$b}} @roles;
+ @roles = sort{ $precedence_list{$a} <=> $precedence_list{$b}} @roles;
return shift @roles;
}
+# =head2 _load_and_apply_role @roles
+#
+# Require C<$role> if it is not already loaded and apply it. This is
+# the meat of this module.
+#
+# =cut
-sub _load_and_apply_role{
- my ($self, @roles) = @_;
- die("You must provide a role name") unless @roles;
+sub _load_and_apply_role {
+ my ($self, $role) = @_;
+ die("You must provide a role name") unless $role;
- foreach my $role ( @roles ) {
- eval { load_class($role) };
- confess("Failed to load role: ${role} $@") if $@;
+ try { use_module($role) }
+ catch { confess("Failed to load role: ${role} $_") };
- carp("Using 'override' is strongly discouraged and may not behave ".
- "as you expect it to. Please use 'around'")
- if scalar keys %{ $role->meta->get_override_method_modifiers_map };
- }
+ croak("Your plugin '$role' must be a Moose::Role")
+ unless find_meta($role)->isa('Moose::Meta::Role');
+
+ carp("Using 'override' is strongly discouraged and may not behave ".
+ "as you expect it to. Please use 'around'")
+ if scalar keys %{ $role->meta->get_override_method_modifiers_map };
- Moose::Util::apply_all_roles( $self, @roles );
+ Moose::Util::apply_all_roles( $self, $role );
return 1;
}
+# =head2 _build_plugin_app_ns
+#
+# Automatically builds the _plugin_app_ns attribute with the classes in the
+# class precedence list that are not part of Moose.
+#
+# =cut
sub _build_plugin_app_ns{
my $self = shift;
@@ -133,6 +267,12 @@ sub _build_plugin_app_ns{
return \@names;
}
+# =head2 _build_plugin_locator
+#
+# Automatically creates a L<Module::Pluggable::Object> instance with the correct
+# search_path.
+#
+# =cut
sub _build_plugin_locator{
my $self = shift;
@@ -144,6 +284,11 @@ sub _build_plugin_locator{
return $locator;
}
+# =head2 meta
+#
+# Keep tests happy. See L<Moose>
+#
+# =cut
1;
@@ -151,13 +296,17 @@ sub _build_plugin_locator{
=encoding UTF-8
+=for :stopwords Guillermo Roditi <groditi@cpan.org> David Hepler Yuval Kogman Steinbrunner
+Karen Etheridge Robert Boone Shawn M Moore Todd instantiation AnnoCPAN
+Stevan
+
=head1 NAME
MooseX::Object::Pluggable - Make your classes pluggable
=head1 VERSION
-version 0.0012
+version 0.0013
=head1 SYNOPSIS
@@ -183,8 +332,8 @@ version 0.0012
=head1 DESCRIPTION
-This module is meant to be loaded as a role from Moose-based classes
-it will add five methods and four attributes to assist you with the loading
+This module is meant to be loaded as a role from Moose-based classes.
+It will add five methods and four attributes to assist you with the loading
and handling of plugins and extensions for plugins. I understand that this may
pollute your namespace, however I took great care in using the least ambiguous
names possible.
@@ -197,13 +346,13 @@ one instance of a class they can all have different plugins loaded. This is a fe
Plugin methods are allowed to C<around>, C<before>, C<after>
their consuming classes, so it is important to watch for load order as plugins can
-and will overload each other. You may also add attributes through has.
+and will overload each other. You may also add attributes through C<has>.
Please note that when you load at runtime you lose the ability to wrap C<BUILD>
and roles using C<has> will not go through compile time checks like C<required>
-and <default>.
+and C<default>.
-Even though C<override> will work , I STRONGLY discourage it's use
+Even though C<override> will work, I B<STRONGLY> discourage its use
and a warning will be thrown if you try to use it.
This is closely linked to the way multiple roles being applied is handled and is not
likely to change. C<override> behavior is closely linked to inheritance and thus will
@@ -213,7 +362,8 @@ save yourself the headache.
=head1 How plugins are loaded
When roles are applied at runtime an anonymous class will wrap your class and
-C<$self-E<gt>blessed> and C<ref $self> will no longer return the name of your object,
+C<< $self->blessed >>, C<< ref $self >> and C<< $self->meta->name >>
+will no longer return the name of your object;
they will instead return the name of the anonymous class created at runtime.
See C<_original_class_name>.
@@ -225,15 +375,15 @@ For a simple example see the tests included in this distribution.
=head2 _plugin_ns
-String. The prefix to use for plugin names provided. MyApp::Plugin is sensible.
+String. The prefix to use for plugin names provided. C<MyApp::Plugin> is sensible.
=head2 _plugin_app_ns
-ArrayRef, Accessor automatically dereferences into array on a read call.
-By default will be filled with the class name and its precedents, it is used
+An ArrayRef accessor that automatically dereferences into array on a read call.
+By default it will be filled with the class name and its precedents. It is used
to determine which directories to look for plugins as well as which plugins
take precedence upon namespace collisions. This allows you to subclass a pluggable
-class and still use it's plugins while using yours first if they are available.
+class and still use its plugins while using yours first if they are available.
=head2 _plugin_locator
@@ -242,9 +392,8 @@ available plugins.
=head2 _original_class_name
-=for stopwords instantiation
-
-Because of the way roles apply C<$self-E<gt>blessed> and C<ref $self> will
+Because of the way roles apply, C<< $self->blessed >>, C<< ref $self >>
+and C<< $self->meta->name >> will
no longer return what you expect. Instead, upon instantiation, the name of the
class instantiated will be stored in this attribute if you need to access the
name the class held before any runtime roles were applied.
@@ -314,8 +463,6 @@ You can find documentation for this module with the perldoc command.
You can also look for information at:
-=for stopwords AnnoCPAN
-
=over 4
=item * AnnoCPAN: Annotated CPAN documentation
@@ -338,8 +485,6 @@ L<http://search.cpan.org/dist/MooseX-Object-Pluggable>
=head1 ACKNOWLEDGEMENTS
-=for stopwords Stevan
-
=over 4
=item #Moose - Huge number of questions
@@ -363,6 +508,36 @@ This software is copyright (c) 2007 by Guillermo Roditi <groditi@cpan.org>.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
+=head1 CONTRIBUTORS
+
+=over 4
+
+=item *
+
+David Steinbrunner <dsteinbrunner@pobox.com>
+
+=item *
+
+Karen Etheridge <ether@cpan.org>
+
+=item *
+
+Robert Boone <robo4288@gmail.com>
+
+=item *
+
+Shawn M Moore <sartak@gmail.com>
+
+=item *
+
+Todd Hepler <thepler@employees.org>
+
+=item *
+
+Yuval Kogman <nothingmuch@woobling.org>
+
+=back
+
=cut
__END__;
@@ -3,71 +3,145 @@
use strict;
use warnings;
-# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.010
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.013
use Test::More tests => 1;
use ExtUtils::MakeMaker;
use File::Spec::Functions;
use List::Util qw/max/;
+use version;
+
+# hide optional CPAN::Meta modules from prereq scanner
+# and check if they are available
+my $cpan_meta = "CPAN::Meta";
+my $cpan_meta_req = "CPAN::Meta::Requirements";
+my $HAS_CPAN_META = eval "require $cpan_meta"; ## no critic
+my $HAS_CPAN_META_REQ = eval "require $cpan_meta_req; $cpan_meta_req->VERSION('2.120900')";
+
+# Verify requirements?
+my $DO_VERIFY_PREREQS = 1;
+
+sub _merge_requires {
+ my ($collector, $prereqs) = @_;
+ for my $phase ( qw/configure build test runtime develop/ ) {
+ next unless exists $prereqs->{$phase};
+ if ( my $req = $prereqs->{$phase}{'requires'} ) {
+ my $cmr = CPAN::Meta::Requirements->from_string_hash( $req );
+ $collector->add_requirements( $cmr );
+ }
+ }
+}
+
+my %include = map {; $_ => 1 } qw(
-my @modules = qw(
- CPAN::Meta
- CPAN::Meta::Requirements
- Carp
- Class::Load
- ExtUtils::MakeMaker
- File::Spec::Functions
- List::Util
- Module::Build::Tiny
- Module::Pluggable::Object
- Moose
- Moose::Role
- Scalar::Util
- Test::More
- lib
- perl
- strict
- warnings
);
my %exclude = map {; $_ => 1 } qw(
);
-my ($source) = grep { -f $_ } qw/MYMETA.json MYMETA.yml META.json/;
-$source = "META.yml" unless defined $source;
-
-# replace modules with dynamic results from MYMETA.json if we can
-# (hide CPAN::Meta from prereq scanner)
-my $cpan_meta = "CPAN::Meta";
-my $cpan_meta_req = "CPAN::Meta::Requirements";
+# Add static prereqs to the included modules list
+my $static_prereqs = do { my $x = {
+ 'configure' => {
+ 'requires' => {
+ 'ExtUtils::MakeMaker' => '6.30',
+ 'Module::Build::Tiny' => '0.034'
+ }
+ },
+ 'develop' => {
+ 'recommends' => {
+ 'Dist::Zilla::PluginBundle::Author::ETHER' => '0.049'
+ },
+ 'requires' => {
+ 'Dist::Zilla' => '5.012',
+ 'Dist::Zilla::Plugin::ContributorsFromGit' => '0',
+ 'Dist::Zilla::Plugin::GitHub::Update' => '0',
+ 'Dist::Zilla::Plugin::GithubMeta' => '0',
+ 'Dist::Zilla::Plugin::MakeMaker::Fallback' => '0',
+ 'Dist::Zilla::Plugin::MetaResources' => '0',
+ 'Dist::Zilla::Plugin::ModuleBuildTiny' => '0.004',
+ 'Dist::Zilla::Plugin::Prereqs' => '0',
+ 'Dist::Zilla::PluginBundle::Author::ETHER' => '0.039',
+ 'File::Spec' => '0',
+ 'IO::Handle' => '0',
+ 'IPC::Open3' => '0',
+ 'Pod::Coverage::TrustPod' => '0',
+ 'Pod::Weaver::Section::Contributors' => '0',
+ 'Test::CPAN::Changes' => '0.19',
+ 'Test::CPAN::Meta' => '0',
+ 'Test::CleanNamespaces' => '0',
+ 'Test::Kwalitee' => '1.12',
+ 'Test::More' => '0.94',
+ 'Test::NoTabs' => '0',
+ 'Test::Pod' => '1.41',
+ 'Test::Pod::Coverage' => '1.08'
+ }
+ },
+ 'runtime' => {
+ 'requires' => {
+ 'Carp' => '0',
+ 'Module::Pluggable::Object' => '0',
+ 'Module::Runtime' => '0',
+ 'Moose::Role' => '0',
+ 'Moose::Util' => '0',
+ 'Scalar::Util' => '0',
+ 'Try::Tiny' => '0',
+ 'namespace::autoclean' => '0',
+ 'perl' => '5.006'
+ }
+ },
+ 'test' => {
+ 'recommends' => {
+ 'CPAN::Meta' => '0',
+ 'CPAN::Meta::Requirements' => '2.120900'
+ },
+ 'requires' => {
+ 'ExtUtils::MakeMaker' => '0',
+ 'File::Spec::Functions' => '0',
+ 'List::Util' => '0',
+ 'Moose' => '0',
+ 'Test::Fatal' => '0',
+ 'Test::More' => '0',
+ 'lib' => '0',
+ 'strict' => '0',
+ 'version' => '0',
+ 'warnings' => '0'
+ }
+ }
+ };
+ $x;
+ };
+
+delete $static_prereqs->{develop} if not $ENV{AUTHOR_TESTING};
+$include{$_} = 1 for map { keys %$_ } map { values %$_ } values %$static_prereqs;
+
+# Merge requirements for major phases (if we can)
my $all_requires;
-if ( -f $source && eval "require $cpan_meta" ) { ## no critic
+if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META_REQ ) {
+ $all_requires = $cpan_meta_req->new;
+ _merge_requires($all_requires, $static_prereqs);
+}
+
+
+# Add dynamic prereqs to the included modules list (if we can)
+my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
+if ( $source && $HAS_CPAN_META ) {
if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
+ my $dynamic_prereqs = $meta->prereqs;
+ delete $dynamic_prereqs->{develop} if not $ENV{AUTHOR_TESTING};
+ $include{$_} = 1 for map { keys %$_ } map { values %$_ } values %$dynamic_prereqs;
- # Get ALL modules mentioned in META (any phase/type)
- my $prereqs = $meta->prereqs;
- delete $prereqs->{develop} if not $ENV{AUTHOR_TESTING};
- my %uniq = map {$_ => 1} map { keys %$_ } map { values %$_ } values %$prereqs;
- $uniq{$_} = 1 for @modules; # don't lose any static ones
- @modules = sort grep { ! $exclude{$_} } keys %uniq;
-
- # If verifying, merge 'requires' only for major phases
- if ( 1 ) {
- $prereqs = $meta->effective_prereqs; # get the object, not the hash
- if (eval "require $cpan_meta_req; 1") { ## no critic
- $all_requires = $cpan_meta_req->new;
- for my $phase ( qw/configure build test runtime/ ) {
- $all_requires->add_requirements(
- $prereqs->requirements_for($phase, 'requires')
- );
- }
- }
+ if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META_REQ ) {
+ _merge_requires($all_requires, $dynamic_prereqs);
}
}
}
+else {
+ $source = 'static metadata';
+}
+my @modules = sort grep { ! $exclude{$_} } keys %include;
my @reports = [qw/Version Module/];
my @dep_errors;
my $req_hash = defined($all_requires) ? $all_requires->as_string_hash : {};
@@ -83,7 +157,7 @@ for my $mod ( @modules ) {
$ver = "undef" unless defined $ver; # Newer MM should do this anyway
push @reports, [$ver, $mod];
- if ( 1 && $all_requires ) {
+ if ( $DO_VERIFY_PREREQS && $all_requires ) {
my $req = $req_hash->{$mod};
if ( defined $req && length $req ) {
if ( ! defined eval { version->parse($ver) } ) {
@@ -99,7 +173,7 @@ for my $mod ( @modules ) {
else {
push @reports, ["missing", $mod];
- if ( 1 && $all_requires ) {
+ if ( $DO_VERIFY_PREREQS && $all_requires ) {
my $req = $req_hash->{$mod};
if ( defined $req && length $req ) {
push @dep_errors, "$mod is not installed (version '$req' required)";
@@ -127,4 +201,4 @@ if ( @dep_errors ) {
pass;
-# vim: ts=2 sts=2 sw=2 et:
+# vim: ts=4 sts=4 sw=4 et:
@@ -0,0 +1,67 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Test::More;
+use Test::Fatal;
+use lib 't/lib';
+
+use TestApp3;
+
+{
+ my $app = TestApp3->new;
+ my $res;
+
+ is(
+ exception { $res = $app->load_plugin('Lives') },
+ undef,
+ 'lived through successfully loading a class',
+ );
+
+ note "does roles: ", join(', ', map { $_->name } $app->meta->calculate_all_roles_with_inheritance );
+
+ ok(exists $app->_plugin_loaded->{'Lives'}, 'Lives was added to loaded plugin list');
+ ok($app->does('TestApp3::Plugin::Lives'), 'app has the Lives plugin applied');
+
+ like(
+ exception { $res = $app->load_plugin('Dies1') },
+ qr/Failed to load /,
+ 'Failure to load a class results in an exception',
+ );
+
+ ok(!exists $app->_plugin_loaded->{'Dies1'}, 'Dies1 was not added to loaded plugin list');
+ ok(!$app->does('TestApp3::Plugin::Dies1'), 'app does not have the Dies1 plugin applied');
+
+ ok(exists $app->_plugin_loaded->{'Lives'}, 'Lives is still in the loaded plugin list');
+ ok($app->does('TestApp3::Plugin::Lives'), 'app still has the Lives plugin applied');
+}
+
+{
+ my $app = TestApp3->new;
+ my $res;
+
+ # note - it's key that we already tried to load Dies1 in an earlier test
+ like(
+ exception { $res = $app->load_plugin('Dies1') },
+ qr/Failed to load /,
+ 'Failure to load a class again results in the right exception',
+ );
+
+ #$res = warning {$app->load_plugins('Dies2', 'Lives')};
+ like(
+ exception { $res = $app->load_plugins('Lives', 'Dies2') },
+ qr/Failed to load /,
+ 'Failure to load any class in a list results in an exception',
+ );
+ note "does roles: ", join(', ', map { $_->name } $app->meta->calculate_all_roles_with_inheritance );
+
+ ok(!exists $app->_plugin_loaded->{'Dies1'}, 'Dies1 was not added to loaded plugin list');
+ ok(!$app->does('TestApp3::Plugin::Dies1'), 'app does not have the Dies1 plugin applied');
+
+ ok(exists $app->_plugin_loaded->{'Lives'}, 'Lives was added to loaded plugin list');
+ ok($app->does('TestApp3::Plugin::Lives'), 'app has the Lives plugin applied');
+
+ ok(!exists $app->_plugin_loaded->{'Dies2'}, 'Dies2 was not added to loaded plugin list');
+ ok(!$app->does('TestApp3::Plugin::Dies2'), 'app does not have the Dies2 plugin applied');
+}
+
+done_testing;
@@ -1,46 +0,0 @@
-use strict;
-use warnings;
-use Test::More tests => 3;
-
-sub not_in_file_ok {
- my ($filename, %regex) = @_;
- open my $fh, "<", $filename
- or die "couldn't open $filename for reading: $!";
-
- my %violated;
-
- while (my $line = <$fh>) {
- while (my ($desc, $regex) = each %regex) {
- if ($line =~ $regex) {
- push @{$violated{$desc}||=[]}, $.;
- }
- }
- }
-
- if (%violated) {
- fail("$filename contains boilerplate text");
- diag "$_ appears on lines @{$violated{$_}}" for keys %violated;
- } else {
- pass("$filename contains no boilerplate text");
- }
-}
-
-not_in_file_ok(README =>
- "The README is used..." => qr/The README is used/,
- "'version information here'" => qr/to provide version information/,
-);
-
-not_in_file_ok(Changes =>
- "placeholder date/time" => qr(Date/time)
-);
-
-sub module_boilerplate_ok {
- my ($module) = @_;
- not_in_file_ok($module =>
- 'the great new $MODULENAME' => qr/ - The great new /,
- 'boilerplate description' => qr/Quick summary of what the module/,
- 'stub function definition' => qr/function[12]/,
- );
-}
-
-module_boilerplate_ok('lib/MooseX/Object/Pluggable.pm');
@@ -0,0 +1,6 @@
+package TestApp3::Plugin::Dies1;
+
+use Moose::Role;
+die 'oh noes';
+
+1;
@@ -0,0 +1,6 @@
+package TestApp3::Plugin::Dies2;
+
+use Moose::Role;
+die 'oh noes';
+
+1;
@@ -0,0 +1,10 @@
+package TestApp3::Plugin::Lives;
+
+use Moose::Role;
+
+use warnings;
+use strict;
+
+sub bar {}
+
+1;
@@ -0,0 +1,11 @@
+package TestApp3;
+
+use strict;
+use warnings;
+use Moose;
+
+with 'MooseX::Object::Pluggable';
+
+__PACKAGE__->meta->make_immutable;
+
+1;
@@ -0,0 +1,8 @@
+[@Default]
+
+[-Transformer]
+transformer = List
+
+[-StopWords]
+
+[Contributors]
@@ -1,7 +1,8 @@
+use 5.006;
use strict;
use warnings;
-# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.037
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.039
use Test::More 0.94 tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
@@ -21,11 +22,12 @@ use File::Spec;
use IPC::Open3;
use IO::Handle;
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+
my @warnings;
for my $lib (@module_files)
{
# see L<perlfaq8/How can I capture STDERR from an external command?>
- open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
my $stderr = IO::Handle->new;
my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
@@ -2,7 +2,7 @@ use strict;
use warnings;
use Test::More;
-# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006001
+# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006002
use Test::Spelling 0.12;
use Pod::Wordlist;
@@ -13,6 +13,9 @@ __DATA__
Guillermo
Roditi
groditi
+David
+Steinbrunner
+dsteinbrunner
Karen
Etheridge
ether
@@ -4,7 +4,7 @@ use Test::More tests => 2;
note 'Checking Changes';
my $changes_file = 'Changes';
-my $newver = '0.0012';
+my $newver = '0.0013';
my $trial_token = '-TRIAL';
SKIP: {
@@ -0,0 +1,9 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Test::More;
+use Test::CleanNamespaces;
+
+all_namespaces_clean();
+
+done_testing;
@@ -1,4 +1,5 @@
#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::MetaTests.
use Test::More;
@@ -1,7 +1,7 @@
use strict;
use warnings;
-# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.05
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.06
use Test::More 0.88;
use Test::NoTabs;
@@ -1,4 +1,5 @@
#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests.
use Test::More;
@@ -1,4 +1,5 @@
#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
use Test::More;
eval "use Test::Pod 1.41";
@@ -0,0 +1,11 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+eval 'use Test::Portability::Files';
+plan skip_all => 'Test::Portability::Files required for testing portability'
+ if $@;
+run_tests();