@@ -1,5 +1,23 @@
Revision history for CPAN-Uploader
+0.103009 2015-05-27 13:56:16-04:00 America/New_York
+ - Do (minor) validation on the user in the config file (Mark Fowler)
+
+0.103008 2015-02-08 22:09:59-05:00 America/New_York
+ - fix documentation link to cpan-upload/CONFIGURATION (Kent Fredric)
+ - you can now "cpan-upload http://some.cool/file.tgz" (Barbie)
+ - add --ignore-errors for cpan-upload (perlancar)
+
+0.103007 2014-04-04 22:02:22-04:00 America/New_York
+ - added "-c" option to cpan-uploader to specify an alternate config
+
+0.103006 2013-12-13 08:18:36 America/New_York
+ update bugtracker and repo metadata
+
+0.103005 2013-07-01 19:01:17 America/New_York
+ Use Config::Identity to permit GPG-encrypting on-disk credentials
+ (thanks, Mike Doherty)
+
0.103004 2013-03-12 15:51:43 America/New_York
like 0.103003, but a production release
@@ -1,4 +1,4 @@
-This software is copyright (c) 2013 by Ricardo SIGNES.
+This software is copyright (c) 2015 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@ b) the "Artistic License"
--- The GNU General Public License, Version 1, February 1989 ---
-This software is Copyright (c) 2013 by Ricardo SIGNES.
+This software is Copyright (c) 2015 by Ricardo SIGNES.
This is free software, licensed under:
@@ -22,7 +22,7 @@ This is free software, licensed under:
Version 1, February 1989
Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Suite 500, Boston, MA 02110-1335 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -272,7 +272,7 @@ That's all there is to it!
--- The Artistic License 1.0 ---
-This software is Copyright (c) 2013 by Ricardo SIGNES.
+This software is Copyright (c) 2015 by Ricardo SIGNES.
This is free software, licensed under:
@@ -1,3 +1,4 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.036.
Changes
LICENSE
MANIFEST
@@ -8,8 +9,8 @@ README
bin/cpan-upload
dist.ini
lib/CPAN/Uploader.pm
-t/00-compile.t
t/00-load.t
-t/000-report-versions-tiny.t
+t/00-report-prereqs.dd
+t/00-report-prereqs.t
xt/release/changes_has_content.t
xt/release/pod-syntax.t
@@ -4,25 +4,24 @@
"Ricardo SIGNES <rjbs@cpan.org>"
],
"dynamic_config" : 0,
- "generated_by" : "Dist::Zilla version 4.300030, CPAN::Meta::Converter version 2.120921",
+ "generated_by" : "Dist::Zilla version 5.036, CPAN::Meta::Converter version 2.150001",
"license" : [
"perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
- "version" : "2"
+ "version" : 2
},
"name" : "CPAN-Uploader",
"prereqs" : {
"configure" : {
"requires" : {
- "ExtUtils::MakeMaker" : "6.30"
+ "ExtUtils::MakeMaker" : "0"
}
},
"develop" : {
"requires" : {
- "Test::Pod" : "1.41",
- "version" : "0.9901"
+ "Test::Pod" : "1.41"
}
},
"runtime" : {
@@ -43,9 +42,12 @@
}
},
"test" : {
+ "recommends" : {
+ "CPAN::Meta" : "2.120900"
+ },
"requires" : {
- "File::Find" : "0",
- "File::Temp" : "0",
+ "ExtUtils::MakeMaker" : "0",
+ "File::Spec" : "0",
"Test::More" : "0.96"
}
}
@@ -53,145 +55,199 @@
"release_status" : "stable",
"resources" : {
"bugtracker" : {
- "web" : "https://github.com/rjbs/cpan-uploader/issues"
+ "web" : "https://github.com/rjbs/CPAN-Uploader/issues"
},
- "homepage" : "https://github.com/rjbs/cpan-uploader",
+ "homepage" : "https://github.com/rjbs/CPAN-Uploader",
"repository" : {
"type" : "git",
- "url" : "https://github.com/rjbs/cpan-uploader.git",
- "web" : "https://github.com/rjbs/cpan-uploader"
+ "url" : "https://github.com/rjbs/CPAN-Uploader.git",
+ "web" : "https://github.com/rjbs/CPAN-Uploader"
}
},
- "version" : "0.103004",
+ "version" : "0.103009",
"x_Dist_Zilla" : {
"perl" : {
- "version" : "5.017008"
+ "version" : "5.021010"
},
"plugins" : [
{
"class" : "Dist::Zilla::Plugin::Git::GatherDir",
+ "config" : {
+ "Dist::Zilla::Plugin::GatherDir" : {
+ "exclude_filename" : [],
+ "exclude_match" : [],
+ "follow_symlinks" : "0",
+ "include_dotfiles" : "0",
+ "prefix" : "",
+ "prune_directory" : [],
+ "root" : "."
+ },
+ "Dist::Zilla::Plugin::Git::GatherDir" : {
+ "include_untracked" : "0"
+ }
+ },
"name" : "@RJBS/Git::GatherDir",
- "version" : "2.008"
+ "version" : "2.034"
},
{
"class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
"name" : "@RJBS/CheckPrereqsIndexed",
- "version" : "0.008"
+ "version" : "0.015"
},
{
"class" : "Dist::Zilla::Plugin::CheckExtraTests",
"name" : "@RJBS/CheckExtraTests",
- "version" : "0.008"
+ "version" : "0.027"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::PromptIfStale",
+ "config" : {
+ "Dist::Zilla::Plugin::PromptIfStale" : {
+ "check_all_plugins" : 0,
+ "check_all_prereqs" : 0,
+ "modules" : [
+ "Dist::Zilla::PluginBundle::RJBS"
+ ],
+ "phase" : "build",
+ "skip" : []
+ }
+ },
+ "name" : "@RJBS/RJBS-Outdated",
+ "version" : "0.044"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::PromptIfStale",
+ "config" : {
+ "Dist::Zilla::Plugin::PromptIfStale" : {
+ "check_all_plugins" : "1",
+ "check_all_prereqs" : 0,
+ "modules" : [],
+ "phase" : "release",
+ "skip" : []
+ }
+ },
+ "name" : "@RJBS/CPAN-Outdated",
+ "version" : "0.044"
},
{
"class" : "Dist::Zilla::Plugin::PruneCruft",
"name" : "@RJBS/@Filter/PruneCruft",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::ManifestSkip",
"name" : "@RJBS/@Filter/ManifestSkip",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::MetaYAML",
"name" : "@RJBS/@Filter/MetaYAML",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::License",
"name" : "@RJBS/@Filter/License",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::Readme",
"name" : "@RJBS/@Filter/Readme",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::ExecDir",
"name" : "@RJBS/@Filter/ExecDir",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::ShareDir",
"name" : "@RJBS/@Filter/ShareDir",
- "version" : "4.300030"
- },
- {
- "class" : "Dist::Zilla::Plugin::MakeMaker",
- "name" : "@RJBS/@Filter/MakeMaker",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::Manifest",
"name" : "@RJBS/@Filter/Manifest",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::TestRelease",
"name" : "@RJBS/@Filter/TestRelease",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::ConfirmRelease",
"name" : "@RJBS/@Filter/ConfirmRelease",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::UploadToCPAN",
"name" : "@RJBS/@Filter/UploadToCPAN",
- "version" : "4.300030"
+ "version" : "5.036"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MakeMaker",
+ "config" : {
+ "Dist::Zilla::Role::TestRunner" : {
+ "default_jobs" : 9
+ }
+ },
+ "name" : "@RJBS/MakeMaker",
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::AutoPrereqs",
"name" : "@RJBS/AutoPrereqs",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::Git::NextVersion",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::NextVersion" : {
+ "first_version" : "0.001",
+ "version_by_branch" : "0",
+ "version_regexp" : "(?^:^([0-9]+\\.[0-9]+)$)"
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
"name" : "@RJBS/Git::NextVersion",
- "version" : "2.008"
+ "version" : "2.034"
},
{
"class" : "Dist::Zilla::Plugin::PkgVersion",
"name" : "@RJBS/PkgVersion",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::MetaConfig",
"name" : "@RJBS/MetaConfig",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::MetaJSON",
"name" : "@RJBS/MetaJSON",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::NextRelease",
"name" : "@RJBS/NextRelease",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::Test::ChangesHasContent",
"name" : "@RJBS/Test::ChangesHasContent",
- "version" : "0.006"
+ "version" : "0.008"
},
{
"class" : "Dist::Zilla::Plugin::PodSyntaxTests",
"name" : "@RJBS/PodSyntaxTests",
- "version" : "4.300030"
- },
- {
- "class" : "Dist::Zilla::Plugin::Test::Compile",
- "name" : "@RJBS/Test::Compile",
- "version" : "1.112820"
+ "version" : "5.036"
},
{
- "class" : "Dist::Zilla::Plugin::ReportVersions::Tiny",
- "name" : "@RJBS/ReportVersions::Tiny",
- "version" : "1.08"
+ "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
+ "name" : "@RJBS/Test::ReportPrereqs",
+ "version" : "0.021"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
@@ -202,37 +258,217 @@
}
},
"name" : "@RJBS/TestMoreWithSubtests",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::PodWeaver",
+ "config" : {
+ "Dist::Zilla::Plugin::PodWeaver" : {
+ "config_plugins" : [
+ "@RJBS"
+ ],
+ "finder" : [
+ ":InstallModules",
+ ":ExecFiles"
+ ],
+ "plugins" : [
+ {
+ "class" : "Pod::Weaver::Plugin::EnsurePod5",
+ "name" : "@CorePrep/EnsurePod5",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::H1Nester",
+ "name" : "@CorePrep/H1Nester",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::SingleEncoding",
+ "name" : "@RJBS/SingleEncoding",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Name",
+ "name" : "@RJBS/Name",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Version",
+ "name" : "@RJBS/Version",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "@RJBS/Prelude",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "@RJBS/Synopsis",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "@RJBS/Description",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "@RJBS/Overview",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "@RJBS/Stability",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "Attributes",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "Methods",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "Functions",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Leftovers",
+ "name" : "@RJBS/Leftovers",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "@RJBS/postlude",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Authors",
+ "name" : "@RJBS/Authors",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Contributors",
+ "name" : "@RJBS/Contributors",
+ "version" : "0.009"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Legal",
+ "name" : "@RJBS/Legal",
+ "version" : "4.012"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::Transformer",
+ "name" : "@RJBS/List",
+ "version" : "4.012"
+ }
+ ]
+ }
+ },
"name" : "@RJBS/PodWeaver",
- "version" : "3.101641"
+ "version" : "4.006"
},
{
"class" : "Dist::Zilla::Plugin::GithubMeta",
"name" : "@RJBS/GithubMeta",
- "version" : "0.28"
+ "version" : "0.50"
},
{
"class" : "Dist::Zilla::Plugin::Git::Check",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Check" : {
+ "untracked_files" : "die"
+ },
+ "Dist::Zilla::Role::Git::DirtyFiles" : {
+ "allow_dirty" : [
+ "dist.ini",
+ "Changes"
+ ],
+ "allow_dirty_match" : [],
+ "changelog" : "Changes"
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
"name" : "@RJBS/@Git/Check",
- "version" : "2.008"
+ "version" : "2.034"
},
{
"class" : "Dist::Zilla::Plugin::Git::Commit",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Commit" : {
+ "add_files_in" : [],
+ "commit_msg" : "v%v%n%n%c",
+ "time_zone" : "local"
+ },
+ "Dist::Zilla::Role::Git::DirtyFiles" : {
+ "allow_dirty" : [
+ "dist.ini",
+ "Changes"
+ ],
+ "allow_dirty_match" : [],
+ "changelog" : "Changes"
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
"name" : "@RJBS/@Git/Commit",
- "version" : "2.008"
+ "version" : "2.034"
},
{
"class" : "Dist::Zilla::Plugin::Git::Tag",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Tag" : {
+ "branch" : null,
+ "signed" : 0,
+ "tag" : "0.103009",
+ "tag_format" : "%v",
+ "tag_message" : "v%v",
+ "time_zone" : "local"
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
"name" : "@RJBS/@Git/Tag",
- "version" : "2.008"
+ "version" : "2.034"
},
{
"class" : "Dist::Zilla::Plugin::Git::Push",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Push" : {
+ "push_to" : [
+ "origin :",
+ "github :"
+ ],
+ "remotes_must_exist" : 0
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
"name" : "@RJBS/@Git/Push",
- "version" : "2.008"
+ "version" : "2.034"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Contributors",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Contributors" : {
+ "include_authors" : "0",
+ "include_releaser" : "1",
+ "order_by" : "name",
+ "paths" : []
+ }
+ },
+ "name" : "@RJBS/Git::Contributors",
+ "version" : "0.011"
},
{
"class" : "Dist::Zilla::Plugin::Prereqs",
@@ -243,46 +479,82 @@
}
},
"name" : "Prereqs",
- "version" : "4.300030"
+ "version" : "5.036"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::RemovePrereqs",
+ "config" : {
+ "Dist::Zilla::Plugin::RemovePrereqs" : {
+ "modules_to_remove" : [
+ "Config::Identity"
+ ]
+ }
+ },
+ "name" : "RemovePrereqs",
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":InstallModules",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":IncModules",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":TestFiles",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExecFiles",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ShareFiles",
- "version" : "4.300030"
+ "version" : "5.036"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":MainModule",
- "version" : "4.300030"
+ "version" : "5.036"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":AllFiles",
+ "version" : "5.036"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":NoFiles",
+ "version" : "5.036"
}
],
"zilla" : {
"class" : "Dist::Zilla::Dist::Builder",
"config" : {
- "is_trial" : "0"
+ "is_trial" : ""
},
- "version" : "4.300030"
+ "version" : "5.036"
}
- }
+ },
+ "x_contributors" : [
+ "Barbie <barbie@missbarbell.co.uk>",
+ "Christian Walde <walde.christian@googlemail.com>",
+ "David Caldwell <david@porkrind.org>",
+ "fREW Schmidt <frioux@gmail.com>",
+ "Gabor Szabo <szabgab@gmail.com>",
+ "Graham Knop <haarg@haarg.org>",
+ "Kent Fredric <kentfredric@gmail.com>",
+ "Mark Fowler <mark@twoshortplanks.com>",
+ "Mike Doherty <doherty@cs.dal.ca>",
+ "Steven Haryanto (on Asus Zenbook) <stevenharyanto@gmail.com>",
+ "sungo <sungo@sungo.us>",
+ "Torsten Raudssus <github@raudssus.de>"
+ ]
}
@@ -3,141 +3,181 @@ abstract: 'upload things to the CPAN'
author:
- 'Ricardo SIGNES <rjbs@cpan.org>'
build_requires:
- File::Find: 0
- File::Temp: 0
- Test::More: 0.96
+ ExtUtils::MakeMaker: '0'
+ File::Spec: '0'
+ Test::More: '0.96'
configure_requires:
- ExtUtils::MakeMaker: 6.30
+ ExtUtils::MakeMaker: '0'
dynamic_config: 0
-generated_by: 'Dist::Zilla version 4.300030, CPAN::Meta::Converter version 2.120921'
+generated_by: 'Dist::Zilla version 5.036, CPAN::Meta::Converter version 2.150001'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ version: '1.4'
name: CPAN-Uploader
requires:
- Carp: 0
- Data::Dumper: 0
- File::Basename: 0
- File::HomeDir: 0
- File::Spec: 0
- Getopt::Long::Descriptive: 0.084
- HTTP::Request::Common: 0
- HTTP::Status: 0
- LWP::Protocol::https: 1
- LWP::UserAgent: 0
- Term::ReadKey: 0
- strict: 0
- warnings: 0
+ Carp: '0'
+ Data::Dumper: '0'
+ File::Basename: '0'
+ File::HomeDir: '0'
+ File::Spec: '0'
+ Getopt::Long::Descriptive: '0.084'
+ HTTP::Request::Common: '0'
+ HTTP::Status: '0'
+ LWP::Protocol::https: '1'
+ LWP::UserAgent: '0'
+ Term::ReadKey: '0'
+ strict: '0'
+ warnings: '0'
resources:
- bugtracker: https://github.com/rjbs/cpan-uploader/issues
- homepage: https://github.com/rjbs/cpan-uploader
- repository: https://github.com/rjbs/cpan-uploader.git
-version: 0.103004
+ bugtracker: https://github.com/rjbs/CPAN-Uploader/issues
+ homepage: https://github.com/rjbs/CPAN-Uploader
+ repository: https://github.com/rjbs/CPAN-Uploader.git
+version: '0.103009'
x_Dist_Zilla:
perl:
- version: 5.017008
+ version: '5.021010'
plugins:
-
class: Dist::Zilla::Plugin::Git::GatherDir
+ config:
+ Dist::Zilla::Plugin::GatherDir:
+ exclude_filename: []
+ exclude_match: []
+ follow_symlinks: '0'
+ include_dotfiles: '0'
+ prefix: ''
+ prune_directory: []
+ root: .
+ Dist::Zilla::Plugin::Git::GatherDir:
+ include_untracked: '0'
name: '@RJBS/Git::GatherDir'
- version: 2.008
+ version: '2.034'
-
class: Dist::Zilla::Plugin::CheckPrereqsIndexed
name: '@RJBS/CheckPrereqsIndexed'
- version: 0.008
+ version: '0.015'
-
class: Dist::Zilla::Plugin::CheckExtraTests
name: '@RJBS/CheckExtraTests'
- version: 0.008
+ version: '0.027'
+ -
+ class: Dist::Zilla::Plugin::PromptIfStale
+ config:
+ Dist::Zilla::Plugin::PromptIfStale:
+ check_all_plugins: 0
+ check_all_prereqs: 0
+ modules:
+ - Dist::Zilla::PluginBundle::RJBS
+ phase: build
+ skip: []
+ name: '@RJBS/RJBS-Outdated'
+ version: '0.044'
+ -
+ class: Dist::Zilla::Plugin::PromptIfStale
+ config:
+ Dist::Zilla::Plugin::PromptIfStale:
+ check_all_plugins: '1'
+ check_all_prereqs: 0
+ modules: []
+ phase: release
+ skip: []
+ name: '@RJBS/CPAN-Outdated'
+ version: '0.044'
-
class: Dist::Zilla::Plugin::PruneCruft
name: '@RJBS/@Filter/PruneCruft'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::ManifestSkip
name: '@RJBS/@Filter/ManifestSkip'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::MetaYAML
name: '@RJBS/@Filter/MetaYAML'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::License
name: '@RJBS/@Filter/License'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::Readme
name: '@RJBS/@Filter/Readme'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::ExecDir
name: '@RJBS/@Filter/ExecDir'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::ShareDir
name: '@RJBS/@Filter/ShareDir'
- version: 4.300030
- -
- class: Dist::Zilla::Plugin::MakeMaker
- name: '@RJBS/@Filter/MakeMaker'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::Manifest
name: '@RJBS/@Filter/Manifest'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::TestRelease
name: '@RJBS/@Filter/TestRelease'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::ConfirmRelease
name: '@RJBS/@Filter/ConfirmRelease'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::UploadToCPAN
name: '@RJBS/@Filter/UploadToCPAN'
- version: 4.300030
+ version: '5.036'
+ -
+ class: Dist::Zilla::Plugin::MakeMaker
+ config:
+ Dist::Zilla::Role::TestRunner:
+ default_jobs: 9
+ name: '@RJBS/MakeMaker'
+ version: '5.036'
-
class: Dist::Zilla::Plugin::AutoPrereqs
name: '@RJBS/AutoPrereqs'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::Git::NextVersion
+ config:
+ Dist::Zilla::Plugin::Git::NextVersion:
+ first_version: '0.001'
+ version_by_branch: '0'
+ version_regexp: (?^:^([0-9]+\.[0-9]+)$)
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
name: '@RJBS/Git::NextVersion'
- version: 2.008
+ version: '2.034'
-
class: Dist::Zilla::Plugin::PkgVersion
name: '@RJBS/PkgVersion'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::MetaConfig
name: '@RJBS/MetaConfig'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::MetaJSON
name: '@RJBS/MetaJSON'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::NextRelease
name: '@RJBS/NextRelease'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::Test::ChangesHasContent
name: '@RJBS/Test::ChangesHasContent'
- version: 0.006
+ version: '0.008'
-
class: Dist::Zilla::Plugin::PodSyntaxTests
name: '@RJBS/PodSyntaxTests'
- version: 4.300030
- -
- class: Dist::Zilla::Plugin::Test::Compile
- name: '@RJBS/Test::Compile'
- version: 1.112820
+ version: '5.036'
-
- class: Dist::Zilla::Plugin::ReportVersions::Tiny
- name: '@RJBS/ReportVersions::Tiny'
- version: 1.08
+ class: Dist::Zilla::Plugin::Test::ReportPrereqs
+ name: '@RJBS/Test::ReportPrereqs'
+ version: '0.021'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -145,31 +185,167 @@ x_Dist_Zilla:
phase: test
type: requires
name: '@RJBS/TestMoreWithSubtests'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::PodWeaver
+ config:
+ Dist::Zilla::Plugin::PodWeaver:
+ config_plugins:
+ - '@RJBS'
+ finder:
+ - ':InstallModules'
+ - ':ExecFiles'
+ plugins:
+ -
+ class: Pod::Weaver::Plugin::EnsurePod5
+ name: '@CorePrep/EnsurePod5'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Plugin::H1Nester
+ name: '@CorePrep/H1Nester'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Plugin::SingleEncoding
+ name: '@RJBS/SingleEncoding'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Name
+ name: '@RJBS/Name'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Version
+ name: '@RJBS/Version'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Region
+ name: '@RJBS/Prelude'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: '@RJBS/Synopsis'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: '@RJBS/Description'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: '@RJBS/Overview'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: '@RJBS/Stability'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Collect
+ name: Attributes
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Collect
+ name: Methods
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Collect
+ name: Functions
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Leftovers
+ name: '@RJBS/Leftovers'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Region
+ name: '@RJBS/postlude'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Authors
+ name: '@RJBS/Authors'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Section::Contributors
+ name: '@RJBS/Contributors'
+ version: '0.009'
+ -
+ class: Pod::Weaver::Section::Legal
+ name: '@RJBS/Legal'
+ version: '4.012'
+ -
+ class: Pod::Weaver::Plugin::Transformer
+ name: '@RJBS/List'
+ version: '4.012'
name: '@RJBS/PodWeaver'
- version: 3.101641
+ version: '4.006'
-
class: Dist::Zilla::Plugin::GithubMeta
name: '@RJBS/GithubMeta'
- version: 0.28
+ version: '0.50'
-
class: Dist::Zilla::Plugin::Git::Check
+ config:
+ Dist::Zilla::Plugin::Git::Check:
+ untracked_files: die
+ Dist::Zilla::Role::Git::DirtyFiles:
+ allow_dirty:
+ - dist.ini
+ - Changes
+ allow_dirty_match: []
+ changelog: Changes
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
name: '@RJBS/@Git/Check'
- version: 2.008
+ version: '2.034'
-
class: Dist::Zilla::Plugin::Git::Commit
+ config:
+ Dist::Zilla::Plugin::Git::Commit:
+ add_files_in: []
+ commit_msg: v%v%n%n%c
+ time_zone: local
+ Dist::Zilla::Role::Git::DirtyFiles:
+ allow_dirty:
+ - dist.ini
+ - Changes
+ allow_dirty_match: []
+ changelog: Changes
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
name: '@RJBS/@Git/Commit'
- version: 2.008
+ version: '2.034'
-
class: Dist::Zilla::Plugin::Git::Tag
+ config:
+ Dist::Zilla::Plugin::Git::Tag:
+ branch: ~
+ signed: 0
+ tag: '0.103009'
+ tag_format: '%v'
+ tag_message: v%v
+ time_zone: local
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
name: '@RJBS/@Git/Tag'
- version: 2.008
+ version: '2.034'
-
class: Dist::Zilla::Plugin::Git::Push
+ config:
+ Dist::Zilla::Plugin::Git::Push:
+ push_to:
+ - 'origin :'
+ - 'github :'
+ remotes_must_exist: 0
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
name: '@RJBS/@Git/Push'
- version: 2.008
+ version: '2.034'
+ -
+ class: Dist::Zilla::Plugin::Git::Contributors
+ config:
+ Dist::Zilla::Plugin::Git::Contributors:
+ include_authors: '0'
+ include_releaser: '1'
+ order_by: name
+ paths: []
+ name: '@RJBS/Git::Contributors'
+ version: '0.011'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -177,33 +353,62 @@ x_Dist_Zilla:
phase: runtime
type: requires
name: Prereqs
- version: 4.300030
+ version: '5.036'
+ -
+ class: Dist::Zilla::Plugin::RemovePrereqs
+ config:
+ Dist::Zilla::Plugin::RemovePrereqs:
+ modules_to_remove:
+ - Config::Identity
+ name: RemovePrereqs
+ version: '5.036'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':InstallModules'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':IncModules'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':TestFiles'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ExecFiles'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ShareFiles'
- version: 4.300030
+ version: '5.036'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':MainModule'
- version: 4.300030
+ version: '5.036'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':AllFiles'
+ version: '5.036'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':NoFiles'
+ version: '5.036'
zilla:
class: Dist::Zilla::Dist::Builder
config:
- is_trial: 0
- version: 4.300030
+ is_trial: ''
+ version: '5.036'
+x_contributors:
+ - 'Barbie <barbie@missbarbell.co.uk>'
+ - 'Christian Walde <walde.christian@googlemail.com>'
+ - 'David Caldwell <david@porkrind.org>'
+ - 'fREW Schmidt <frioux@gmail.com>'
+ - 'Gabor Szabo <szabgab@gmail.com>'
+ - 'Graham Knop <haarg@haarg.org>'
+ - 'Kent Fredric <kentfredric@gmail.com>'
+ - 'Mark Fowler <mark@twoshortplanks.com>'
+ - 'Mike Doherty <doherty@cs.dal.ca>'
+ - 'Steven Haryanto (on Asus Zenbook) <stevenharyanto@gmail.com>'
+ - 'sungo <sungo@sungo.us>'
+ - 'Torsten Raudssus <github@raudssus.de>'
@@ -1,23 +1,16 @@
-
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.036.
use strict;
use warnings;
-use ExtUtils::MakeMaker 6.30;
-
-
+use ExtUtils::MakeMaker;
my %WriteMakefileArgs = (
"ABSTRACT" => "upload things to the CPAN",
"AUTHOR" => "Ricardo SIGNES <rjbs\@cpan.org>",
- "BUILD_REQUIRES" => {
- "File::Find" => 0,
- "File::Temp" => 0,
- "Test::More" => "0.96"
- },
"CONFIGURE_REQUIRES" => {
- "ExtUtils::MakeMaker" => "6.30"
+ "ExtUtils::MakeMaker" => 0
},
"DISTNAME" => "CPAN-Uploader",
"EXE_FILES" => [
@@ -40,30 +33,44 @@ my %WriteMakefileArgs = (
"strict" => 0,
"warnings" => 0
},
- "VERSION" => "0.103004",
+ "TEST_REQUIRES" => {
+ "ExtUtils::MakeMaker" => 0,
+ "File::Spec" => 0,
+ "Test::More" => "0.96"
+ },
+ "VERSION" => "0.103009",
"test" => {
"TESTS" => "t/*.t"
}
);
-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};
- }
- }
+my %FallbackPrereqs = (
+ "Carp" => 0,
+ "Data::Dumper" => 0,
+ "ExtUtils::MakeMaker" => 0,
+ "File::Basename" => 0,
+ "File::HomeDir" => 0,
+ "File::Spec" => 0,
+ "Getopt::Long::Descriptive" => "0.084",
+ "HTTP::Request::Common" => 0,
+ "HTTP::Status" => 0,
+ "LWP::Protocol::https" => 1,
+ "LWP::UserAgent" => 0,
+ "Term::ReadKey" => 0,
+ "Test::More" => "0.96",
+ "strict" => 0,
+ "warnings" => 0
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+ delete $WriteMakefileArgs{TEST_REQUIRES};
+ delete $WriteMakefileArgs{BUILD_REQUIRES};
+ $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
WriteMakefile(%WriteMakefileArgs);
-
-
-
@@ -1,13 +1,15 @@
This archive contains the distribution CPAN-Uploader,
-version 0.103004:
+version 0.103009:
upload things to the CPAN
-This software is copyright (c) 2013 by Ricardo SIGNES.
+This software is copyright (c) 2015 by Ricardo SIGNES.
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.036.
+
@@ -3,16 +3,55 @@ use strict;
use warnings;
package
cpan_upload;
+# PODNAME: cpan-upload
# ABSTRACT: upload a distribution to the CPAN
use CPAN::Uploader;
use Getopt::Long::Descriptive 0.084;
+#pod =head1 USAGE
+#pod
+#pod usage: cpan-upload [options] file-to-upload-1 [ file-to-upload-2 ... ]
+#pod -v --verbose enable verbose logging
+#pod -h --help display this help message
+#pod --dry-run do not actually upload anything
+#pod
+#pod -u --user your PAUSE username
+#pod -p --password the password to your PAUSE account
+#pod -d --directory a dir in your CPAN space in which to put the file
+#pod --http-proxy URL of the http proxy to use in uploading
+#pod --ignore-errors instead of aborting, continue to next file on error
+#pod
+#pod =head1 CONFIGURATION
+#pod
+#pod If you have a C<.pause> file in your home directory, it will be checked for a
+#pod username and password. It should look like this:
+#pod
+#pod user EXAMPLE
+#pod password your-secret-password
+#pod
+#pod You can GnuPG-encrypt this file if you wish:
+#pod
+#pod # Follow the prompts, setting your key as the "recipient"
+#pod # Use ^D once you've finished typing out your authentication information
+#pod gpg -ea > $HOME/.pause
+#pod # OR, encrypt a file you already created:
+#pod gpg -ea $HOME/.pause && mv $HOME/.pause{.asc,}
+#pod
+#pod =head1 SEE ALSO
+#pod
+#pod =over 4
+#pod
+#pod =item L<CPAN::Uploader>
+#pod
+#pod =item L<Config::Identity>
+#pod
+#pod =back
+#pod
+#pod =cut
my %arg;
-my $from_file = CPAN::Uploader->read_config_file;
-
# This nonsensical hack is to cope with Module::Install wanting to call
# cpan-upload -verbose; it should be made to use CPAN::Uploader instead.
$ARGV[0] = '--verbose' if @ARGV == 2 and $ARGV[0] eq '-verbose';
@@ -29,6 +68,8 @@ my ($opt, $usage) = describe_options(
[ "password|p=s" => "the password to your PAUSE account" ],
[ "directory|d=s" => "a dir in your CPAN space in which to put the files" ],
[ "http-proxy=s" => "URL of the http proxy to use in uploading" ],
+ [ "ignore-errors" => "instead of aborting, continue to next file on error" ],
+ [ "config|c=s" => "config file to use; defaults to ~/.pause" ],
);
if ($opt->help) {
@@ -36,6 +77,8 @@ if ($opt->help) {
exit;
}
+my $from_file = CPAN::Uploader->read_config_file($opt->config);
+
die "Please provide at least one file name.\n" . $usage unless @ARGV;
$arg{user} = $opt->_specified('user') ? $opt->user : $from_file->{user};
@@ -70,23 +113,33 @@ if (! $arg{password}) {
}
foreach my $file (@ARGV) {
- CPAN::Uploader->upload_file(
- $file,
- \%arg,
- );
+ my $ok = eval {
+ CPAN::Uploader->upload_file(
+ $file,
+ \%arg,
+ );
+ 1;
+ };
+ unless ($ok) {
+ my $error = $@;
+ die $@ unless $opt->ignore_errors;
+ warn $@;
+ }
}
__END__
=pod
+=encoding UTF-8
+
=head1 NAME
-cpan_upload - upload a distribution to the CPAN
+cpan-upload - upload a distribution to the CPAN
=head1 VERSION
-version 0.103004
+version 0.103009
=head1 USAGE
@@ -94,11 +147,12 @@ version 0.103004
-v --verbose enable verbose logging
-h --help display this help message
--dry-run do not actually upload anything
-
+
-u --user your PAUSE username
-p --password the password to your PAUSE account
-d --directory a dir in your CPAN space in which to put the file
--http-proxy URL of the http proxy to use in uploading
+ --ignore-errors instead of aborting, continue to next file on error
=head1 CONFIGURATION
@@ -108,9 +162,23 @@ username and password. It should look like this:
user EXAMPLE
password your-secret-password
+You can GnuPG-encrypt this file if you wish:
+
+ # Follow the prompts, setting your key as the "recipient"
+ # Use ^D once you've finished typing out your authentication information
+ gpg -ea > $HOME/.pause
+ # OR, encrypt a file you already created:
+ gpg -ea $HOME/.pause && mv $HOME/.pause{.asc,}
+
=head1 SEE ALSO
-L<CPAN::Uploader>
+=over 4
+
+=item L<CPAN::Uploader>
+
+=item L<Config::Identity>
+
+=back
=head1 AUTHOR
@@ -118,7 +186,7 @@ Ricardo SIGNES <rjbs@cpan.org>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2013 by Ricardo SIGNES.
+This software is copyright (c) 2015 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -8,3 +8,6 @@ github_issues = 1
[Prereqs]
LWP::Protocol::https = 1
+
+[RemovePrereqs]
+remove = Config::Identity
@@ -1,11 +1,16 @@
use strict;
use warnings;
package CPAN::Uploader;
-{
- $CPAN::Uploader::VERSION = '0.103004';
-}
# ABSTRACT: upload things to the CPAN
-
+$CPAN::Uploader::VERSION = '0.103009';
+#pod =head1 ORIGIN
+#pod
+#pod This code is mostly derived from C<cpan-upload-http> by Brad Fitzpatrick, which
+#pod in turn was based on C<cpan-upload> by Neil Bowers. I (I<rjbs>) didn't want to
+#pod have to use a C<system> call to run either of those, so I refactored the code
+#pod into this module.
+#pod
+#pod =cut
use Carp ();
use File::Basename ();
@@ -18,8 +23,26 @@ use File::HomeDir;
my $UPLOAD_URI = $ENV{CPAN_UPLOADER_UPLOAD_URI}
|| 'https://pause.perl.org/pause/authenquery';
+#pod =method upload_file
+#pod
+#pod CPAN::Uploader->upload_file($file, \%arg);
+#pod
+#pod $uploader->upload_file($file);
+#pod
+#pod Valid arguments are:
+#pod
+#pod user - (required) your CPAN / PAUSE id
+#pod password - (required) your CPAN / PAUSE password
+#pod subdir - the directory (under your home directory) to upload to
+#pod http_proxy - uri of the http proxy to use
+#pod upload_uri - uri of the upload handler; usually the default (PAUSE) is right
+#pod debug - if set to true, spew lots more debugging output
+#pod
+#pod This method attempts to actually upload the named file to the CPAN. It will
+#pod raise an exception on error.
+#pod
+#pod =cut
-use Data::Dumper;
sub upload_file {
my ($self, $file, $arg) = @_;
@@ -33,11 +56,12 @@ sub upload_file {
$self = $self->new($arg) if $arg;
if ($arg->{dry_run}) {
+ require Data::Dumper;
$self->log("By request, cowardly refusing to do anything at all.");
$self->log(
"The following arguments would have been used to upload: \n"
- . '$self: ' . Dumper($self)
- . '$file: ' . Dumper($file)
+ . '$self: ' . Data::Dumper::Dumper($self)
+ . '$file: ' . Data::Dumper::Dumper($file)
);
} else {
$self->_upload($file);
@@ -69,18 +93,35 @@ sub _upload {
my $uri = $self->{upload_uri} || $UPLOAD_URI;
- my $request = POST(
- $uri,
- Content_Type => 'form-data',
- Content => {
- HIDDENNAME => $self->{user},
+ my $type = 'form-data';
+ my %content = (
+ HIDDENNAME => $self->{user},
+ ($self->{subdir} ? (pause99_add_uri_subdirtext => $self->{subdir}) : ()),
+ );
+
+ if ($file =~ m{^https?://}) {
+ $type = 'application/x-www-form-urlencoded';
+ %content = (
+ %content,
+ pause99_add_uri_httpupload => '',
+ pause99_add_uri_uri => $file,
+ SUBMIT_pause99_add_uri_uri => " Upload this URL ",
+ );
+ } else {
+ %content = (
+ %content,
CAN_MULTIPART => 1,
pause99_add_uri_upload => File::Basename::basename($file),
- SUBMIT_pause99_add_uri_httpupload => " Upload this file from my disk ",
- pause99_add_uri_uri => "",
pause99_add_uri_httpupload => [ $file ],
- ($self->{subdir} ? (pause99_add_uri_subdirtext => $self->{subdir}) : ()),
- },
+ pause99_add_uri_uri => '',
+ SUBMIT_pause99_add_uri_httpupload => " Upload this file from my disk ",
+ );
+ }
+
+ my $request = POST(
+ $uri,
+ Content_Type => $type,
+ Content => \%content,
);
$request->authorization_basic($self->{user}, $self->{password});
@@ -127,6 +168,16 @@ sub _upload {
}
+#pod =method new
+#pod
+#pod my $uploader = CPAN::Uploader->new(\%arg);
+#pod
+#pod This method returns a new uploader. You probably don't need to worry about
+#pod this method.
+#pod
+#pod Valid arguments are the same as those to C<upload_file>.
+#pod
+#pod =cut
sub new {
my ($class, $arg) = @_;
@@ -135,40 +186,79 @@ sub new {
bless $arg => $class;
}
+#pod =method read_config_file
+#pod
+#pod my $config = CPAN::Uploader->read_config_file( $filename );
+#pod
+#pod This reads the config file and returns a hashref of its contents that can be
+#pod used as configuration for CPAN::Uploader.
+#pod
+#pod If no filename is given, it looks for F<.pause> in the user's home directory
+#pod (from the env var C<HOME>, or the current directory if C<HOME> isn't set).
+#pod
+#pod See L<cpan-upload/CONFIGURATION> for the config format.
+#pod
+#pod =cut
sub read_config_file {
my ($class, $filename) = @_;
- unless ($filename) {
+ unless (defined $filename) {
my $home = File::HomeDir->my_home || '.';
$filename = File::Spec->catfile($home, '.pause');
return {} unless -e $filename and -r _;
}
- # Process .pause
- open my $pauserc, '<', $filename
- or die "can't open $filename for reading: $!";
+ my %conf;
+ if ( eval { require Config::Identity } ) {
+ %conf = Config::Identity->load($filename);
+ $conf{user} = delete $conf{username} unless $conf{user};
+ }
+ else { # Process .pause manually
+ open my $pauserc, '<', $filename
+ or die "can't open $filename for reading: $!";
- my %from_file;
- while (<$pauserc>) {
- chomp;
- next unless $_ and $_ !~ /^\s*#/;
+ while (<$pauserc>) {
+ chomp;
+ next unless $_ and $_ !~ /^\s*#/;
- my ($k, $v) = /^\s*(\w+)\s+(.+)$/;
- Carp::croak "multiple enties for $k" if $from_file{$k};
- $from_file{$k} = $v;
+ my ($k, $v) = /^\s*(\w+)\s+(.+)$/;
+ Carp::croak "multiple enties for $k" if $conf{$k};
+ $conf{$k} = $v;
+ }
}
- return \%from_file;
+ # minimum validation of arguments
+ Carp::croak "Configured user has trailing whitespace"
+ if defined $conf{user} && $conf{user} =~ /\s$/;
+ Carp::croak "Configured user contains whitespace"
+ if defined $conf{user} && $conf{user} =~ /\s/;
+
+ return \%conf;
}
+#pod =method log
+#pod
+#pod $uploader->log($message);
+#pod
+#pod This method logs the given string. The default behavior is to print it to the
+#pod screen. The message should not end in a newline, as one will be added as
+#pod needed.
+#pod
+#pod =cut
sub log {
shift;
print "$_[0]\n"
}
+#pod =method log_debug
+#pod
+#pod This method behaves like C<L</log>>, but only logs the message if the
+#pod CPAN::Uploader is in debug mode.
+#pod
+#pod =cut
sub log_debug {
my $self = shift;
@@ -182,13 +272,15 @@ __END__
=pod
+=encoding UTF-8
+
=head1 NAME
CPAN::Uploader - upload things to the CPAN
=head1 VERSION
-version 0.103004
+version 0.103009
=head1 METHODS
@@ -229,7 +321,7 @@ used as configuration for CPAN::Uploader.
If no filename is given, it looks for F<.pause> in the user's home directory
(from the env var C<HOME>, or the current directory if C<HOME> isn't set).
-See L<cpan_upload/CONFIGURATION> for the config format.
+See L<cpan-upload/CONFIGURATION> for the config format.
=head2 log
@@ -255,9 +347,65 @@ into this module.
Ricardo SIGNES <rjbs@cpan.org>
+=head1 CONTRIBUTORS
+
+=for stopwords Barbie Christian Walde David Caldwell fREW Schmidt Gabor Szabo Graham Knop Kent Fredric Mark Fowler Mike Doherty Steven Haryanto (on Asus Zenbook) sungo Torsten Raudssus
+
+=over 4
+
+=item *
+
+Barbie <barbie@missbarbell.co.uk>
+
+=item *
+
+Christian Walde <walde.christian@googlemail.com>
+
+=item *
+
+David Caldwell <david@porkrind.org>
+
+=item *
+
+fREW Schmidt <frioux@gmail.com>
+
+=item *
+
+Gabor Szabo <szabgab@gmail.com>
+
+=item *
+
+Graham Knop <haarg@haarg.org>
+
+=item *
+
+Kent Fredric <kentfredric@gmail.com>
+
+=item *
+
+Mark Fowler <mark@twoshortplanks.com>
+
+=item *
+
+Mike Doherty <doherty@cs.dal.ca>
+
+=item *
+
+Steven Haryanto (on Asus Zenbook) <stevenharyanto@gmail.com>
+
+=item *
+
+sungo <sungo@sungo.us>
+
+=item *
+
+Torsten Raudssus <github@raudssus.de>
+
+=back
+
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2013 by Ricardo SIGNES.
+This software is copyright (c) 2015 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,73 +0,0 @@
-#!perl
-
-use strict;
-use warnings;
-
-use Test::More;
-
-
-
-use File::Find;
-use File::Temp qw{ tempdir };
-
-my @modules;
-find(
- sub {
- return if $File::Find::name !~ /\.pm\z/;
- my $found = $File::Find::name;
- $found =~ s{^lib/}{};
- $found =~ s{[/\\]}{::}g;
- $found =~ s/\.pm$//;
- # nothing to skip
- push @modules, $found;
- },
- 'lib',
-);
-
-sub _find_scripts {
- my $dir = shift @_;
-
- my @found_scripts = ();
- find(
- sub {
- return unless -f;
- my $found = $File::Find::name;
- # nothing to skip
- open my $FH, '<', $_ or do {
- note( "Unable to open $found in ( $! ), skipping" );
- return;
- };
- my $shebang = <$FH>;
- return unless $shebang =~ /^#!.*?\bperl\b\s*$/;
- push @found_scripts, $found;
- },
- $dir,
- );
-
- return @found_scripts;
-}
-
-my @scripts;
-do { push @scripts, _find_scripts($_) if -d $_ }
- for qw{ bin script scripts };
-
-my $plan = scalar(@modules) + scalar(@scripts);
-$plan ? (plan tests => $plan) : (plan skip_all => "no tests to run");
-
-{
- # fake home for cpan-testers
- # no fake requested ## local $ENV{HOME} = tempdir( CLEANUP => 1 );
-
- like( qx{ $^X -Ilib -e "require $_; print '$_ ok'" }, qr/^\s*$_ ok/s, "$_ loaded ok" )
- for sort @modules;
-
- SKIP: {
- eval "use Test::Script 1.05; 1;";
- skip "Test::Script needed to test script compilation", scalar(@scripts) if $@;
- foreach my $file ( @scripts ) {
- my $script = $file;
- $script =~ s!.*/!!;
- script_compiles( $file, "$script script compiles" );
- }
- }
-}
@@ -0,0 +1,41 @@
+do { my $x = {
+ 'configure' => {
+ 'requires' => {
+ 'ExtUtils::MakeMaker' => '0'
+ }
+ },
+ 'develop' => {
+ 'requires' => {
+ 'Test::Pod' => '1.41'
+ }
+ },
+ 'runtime' => {
+ 'requires' => {
+ 'Carp' => '0',
+ 'Data::Dumper' => '0',
+ 'File::Basename' => '0',
+ 'File::HomeDir' => '0',
+ 'File::Spec' => '0',
+ 'Getopt::Long::Descriptive' => '0.084',
+ 'HTTP::Request::Common' => '0',
+ 'HTTP::Status' => '0',
+ 'LWP::Protocol::https' => '1',
+ 'LWP::UserAgent' => '0',
+ 'Term::ReadKey' => '0',
+ 'strict' => '0',
+ 'warnings' => '0'
+ }
+ },
+ 'test' => {
+ 'recommends' => {
+ 'CPAN::Meta' => '2.120900'
+ },
+ 'requires' => {
+ 'ExtUtils::MakeMaker' => '0',
+ 'File::Spec' => '0',
+ 'Test::More' => '0.96'
+ }
+ }
+ };
+ $x;
+ }
\ No newline at end of file
@@ -0,0 +1,183 @@
+#!perl
+
+use strict;
+use warnings;
+
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.021
+
+use Test::More tests => 1;
+
+use ExtUtils::MakeMaker;
+use File::Spec;
+
+# from $version::LAX
+my $lax_version_re =
+ qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
+ |
+ (?:\.[0-9]+) (?:_[0-9]+)?
+ ) | (?:
+ v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
+ |
+ (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
+ )
+ )/x;
+
+# hide optional CPAN::Meta modules from prereq scanner
+# and check if they are available
+my $cpan_meta = "CPAN::Meta";
+my $cpan_meta_pre = "CPAN::Meta::Prereqs";
+my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic
+
+# Verify requirements?
+my $DO_VERIFY_PREREQS = 1;
+
+sub _max {
+ my $max = shift;
+ $max = ( $_ > $max ) ? $_ : $max for @_;
+ return $max;
+}
+
+sub _merge_prereqs {
+ my ($collector, $prereqs) = @_;
+
+ # CPAN::Meta::Prereqs object
+ if (ref $collector eq $cpan_meta_pre) {
+ return $collector->with_merged_prereqs(
+ CPAN::Meta::Prereqs->new( $prereqs )
+ );
+ }
+
+ # Raw hashrefs
+ for my $phase ( keys %$prereqs ) {
+ for my $type ( keys %{ $prereqs->{$phase} } ) {
+ for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
+ $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
+ }
+ }
+ }
+
+ return $collector;
+}
+
+my @include = qw(
+
+);
+
+my @exclude = qw(
+
+);
+
+# Add static prereqs to the included modules list
+my $static_prereqs = do 't/00-report-prereqs.dd';
+
+# Merge all prereqs (either with ::Prereqs or a hashref)
+my $full_prereqs = _merge_prereqs(
+ ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
+ $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) } ) {
+ $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
+ }
+}
+else {
+ $source = 'static metadata';
+}
+
+my @full_reports;
+my @dep_errors;
+my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;
+
+# Add static includes into a fake section
+for my $mod (@include) {
+ $req_hash->{other}{modules}{$mod} = 0;
+}
+
+for my $phase ( qw(configure build test runtime develop other) ) {
+ next unless $req_hash->{$phase};
+ next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});
+
+ for my $type ( qw(requires recommends suggests conflicts modules) ) {
+ next unless $req_hash->{$phase}{$type};
+
+ my $title = ucfirst($phase).' '.ucfirst($type);
+ my @reports = [qw/Module Want Have/];
+
+ for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
+ next if $mod eq 'perl';
+ next if grep { $_ eq $mod } @exclude;
+
+ my $file = $mod;
+ $file =~ s{::}{/}g;
+ $file .= ".pm";
+ my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;
+
+ my $want = $req_hash->{$phase}{$type}{$mod};
+ $want = "undef" unless defined $want;
+ $want = "any" if !$want && $want == 0;
+
+ my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";
+
+ if ($prefix) {
+ my $have = MM->parse_version( File::Spec->catfile($prefix, $file) );
+ $have = "undef" unless defined $have;
+ push @reports, [$mod, $want, $have];
+
+ if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
+ if ( $have !~ /\A$lax_version_re\z/ ) {
+ push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
+ }
+ elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
+ push @dep_errors, "$mod version '$have' is not in required range '$want'";
+ }
+ }
+ }
+ else {
+ push @reports, [$mod, $want, "missing"];
+
+ if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
+ push @dep_errors, "$mod is not installed ($req_string)";
+ }
+ }
+ }
+
+ if ( @reports ) {
+ push @full_reports, "=== $title ===\n\n";
+
+ my $ml = _max( map { length $_->[0] } @reports );
+ my $wl = _max( map { length $_->[1] } @reports );
+ my $hl = _max( map { length $_->[2] } @reports );
+
+ if ($type eq 'modules') {
+ splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl];
+ push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports;
+ }
+ else {
+ splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
+ push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
+ }
+
+ push @full_reports, "\n";
+ }
+ }
+}
+
+if ( @full_reports ) {
+ diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
+}
+
+if ( @dep_errors ) {
+ diag join("\n",
+ "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
+ "The following REQUIRED prerequisites were not satisfied:\n",
+ @dep_errors,
+ "\n"
+ );
+}
+
+pass;
+
+# vim: ts=4 sts=4 sw=4 et:
@@ -1,88 +0,0 @@
-use strict;
-use warnings;
-use Test::More 0.88;
-# This is a relatively nice way to avoid Test::NoWarnings breaking our
-# expectations by adding extra tests, without using no_plan. It also helps
-# avoid any other test module that feels introducing random tests, or even
-# test plans, is a nice idea.
-our $success = 0;
-END { $success && done_testing; }
-
-# List our own version used to generate this
-my $v = "\nGenerated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.08\n";
-
-eval { # no excuses!
- # report our Perl details
- my $want = "any version";
- $v .= "perl: $] (wanted $want) on $^O from $^X\n\n";
-};
-defined($@) and diag("$@");
-
-# Now, our module version dependencies:
-sub pmver {
- my ($module, $wanted) = @_;
- $wanted = " (want $wanted)";
- my $pmver;
- eval "require $module;";
- if ($@) {
- if ($@ =~ m/Can't locate .* in \@INC/) {
- $pmver = 'module not found.';
- } else {
- diag("${module}: $@");
- $pmver = 'died during require.';
- }
- } else {
- my $version;
- eval { $version = $module->VERSION; };
- if ($@) {
- diag("${module}: $@");
- $pmver = 'died during VERSION check.';
- } elsif (defined $version) {
- $pmver = "$version";
- } else {
- $pmver = '<undef>';
- }
- }
-
- # So, we should be good, right?
- return sprintf('%-45s => %-10s%-15s%s', $module, $pmver, $wanted, "\n");
-}
-
-eval { $v .= pmver('Carp','any version') };
-eval { $v .= pmver('Data::Dumper','any version') };
-eval { $v .= pmver('ExtUtils::MakeMaker','6.30') };
-eval { $v .= pmver('File::Basename','any version') };
-eval { $v .= pmver('File::Find','any version') };
-eval { $v .= pmver('File::HomeDir','any version') };
-eval { $v .= pmver('File::Spec','any version') };
-eval { $v .= pmver('File::Temp','any version') };
-eval { $v .= pmver('Getopt::Long::Descriptive','0.084') };
-eval { $v .= pmver('HTTP::Request::Common','any version') };
-eval { $v .= pmver('HTTP::Status','any version') };
-eval { $v .= pmver('LWP::Protocol::https','1') };
-eval { $v .= pmver('LWP::UserAgent','any version') };
-eval { $v .= pmver('Term::ReadKey','any version') };
-eval { $v .= pmver('Test::More','0.96') };
-eval { $v .= pmver('Test::Pod','1.41') };
-eval { $v .= pmver('strict','any version') };
-eval { $v .= pmver('version','0.9901') };
-eval { $v .= pmver('warnings','any version') };
-
-
-# All done.
-$v .= <<'EOT';
-
-Thanks for using my code. I hope it works for you.
-If not, please try and include this output in the bug report.
-That will help me reproduce the issue and solve your problem.
-
-EOT
-
-diag($v);
-ok(1, "we really didn't test anything, just reporting data");
-$success = 1;
-
-# Work around another nasty module on CPAN. :/
-no warnings 'once';
-$Template::Test::NO_FLUSH = 1;
-exit 0;
@@ -4,7 +4,7 @@ use Test::More tests => 2;
note 'Checking Changes';
my $changes_file = 'Changes';
-my $newver = '0.103004';
+my $newver = '0.103009';
my $trial_token = '-TRIAL';
SKIP: {
@@ -1,7 +1,6 @@
#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
use Test::More;
-
-eval "use Test::Pod 1.41";
-plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
+use Test::Pod 1.41;
all_pod_files_ok();