Dist-Zilla
view release on metacpan or search on metacpan
lib/Dist/Zilla/Plugin/UploadToCPAN.pm view on Meta::CPAN
package Dist::Zilla::Plugin::UploadToCPAN 6.037;
# ABSTRACT: upload the dist to CPAN
use Moose;
with 'Dist::Zilla::Role::BeforeRelease',
'Dist::Zilla::Role::Releaser';
use Dist::Zilla::Pragmas;
use File::Spec;
use Moose::Util::TypeConstraints;
use Scalar::Util qw(weaken);
use Dist::Zilla::Util;
use Try::Tiny;
use namespace::autoclean;
#pod =head1 SYNOPSIS
#pod
#pod If loaded, this plugin will allow the F<release> command to upload to the CPAN.
#pod
#pod =head1 DESCRIPTION
#pod
#pod This plugin looks for configuration in your C<dist.ini> or (more
#pod likely) C<~/.dzil/config.ini>:
#pod
#pod [%PAUSE]
#pod username = YOUR-PAUSE-ID
#pod password = YOUR-PAUSE-PASSWORD
#pod
#pod If this configuration does not exist, it can read the configuration from
#pod C<~/.pause>, in the same format that L<cpan-upload> requires:
#pod
#pod user YOUR-PAUSE-ID
#pod password YOUR-PAUSE-PASSWORD
#pod
#pod If neither configuration exists, it will prompt you to enter your
#pod username and password during the BeforeRelease phase. Entering a
#pod blank username or password will abort the release.
#pod
#pod You can't put your password in your F<dist.ini>. C'mon now!
#pod
#pod =cut
{
package
Dist::Zilla::Plugin::UploadToCPAN::_Uploader;
# CPAN::Uploader will be loaded later if used
our @ISA = 'CPAN::Uploader';
# Report CPAN::Uploader's version, not ours:
sub _ua_string { CPAN::Uploader->_ua_string }
sub log {
my $self = shift;
$self->{'Dist::Zilla'}{plugin}->log(@_);
}
}
#pod =attr credentials_stash
#pod
#pod This attribute holds the name of a L<PAUSE stash|Dist::Zilla::Stash::Login>
#pod that will contain the credentials to be used for the upload. By default,
#pod UploadToCPAN will look for a C<%PAUSE> stash.
#pod
#pod =cut
has credentials_stash => (
is => 'ro',
isa => 'Str',
default => '%PAUSE'
);
lib/Dist/Zilla/Plugin/UploadToCPAN.pm view on Meta::CPAN
#pod
#pod =cut
has upload_uri => (
is => 'ro',
isa => 'Str',
predicate => 'has_upload_uri',
);
#pod =attr retries
#pod
#pod The number of retries to perform on upload failure (5xx response). The default
#pod is set to 3 by this plugin. This option will be passed to L<CPAN::Uploader>.
#pod
#pod =cut
has retries => (
is => 'ro',
isa => 'Int',
default => 3,
);
#pod =attr retry_delay
#pod
#pod The number of seconds to wait between retries. The default is set to 5 seconds
#pod by this plugin. This option will be passed to L<CPAN::Uploader>.
#pod
#pod =cut
has retry_delay => (
is => 'ro',
isa => 'Int',
default => 5,
);
has uploader => (
is => 'ro',
isa => 'CPAN::Uploader',
lazy => 1,
default => sub {
my ($self) = @_;
# Load the module lazily
require CPAN::Uploader;
CPAN::Uploader->VERSION('0.103004'); # require HTTPS
my $uploader = Dist::Zilla::Plugin::UploadToCPAN::_Uploader->new({
user => $self->username,
password => $self->password,
($self->has_subdir
? (subdir => $self->subdir) : ()),
($self->has_upload_uri
? (upload_uri => $self->upload_uri) : ()),
($self->retries
? (retries => $self->retries) : ()),
($self->retry_delay
? (retry_delay => $self->retry_delay) : ()),
});
$uploader->{'Dist::Zilla'}{plugin} = $self;
weaken $uploader->{'Dist::Zilla'}{plugin};
return $uploader;
}
);
sub before_release {
my $self = shift;
my $sentinel = [];
for my $attr (qw(username password)) {
my $value;
my $ok = eval { $value = $self->$attr; 1 };
unless ($ok) {
$self->log_fatal([ "Couldn't figure out %s: %s", $attr, $@ ]);
}
unless (length $value) {
$self->log_fatal([ "No $attr was provided" ]);
}
}
return;
}
sub release {
my ($self, $archive) = @_;
$self->uploader->upload_file("$archive");
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Dist::Zilla::Plugin::UploadToCPAN - upload the dist to CPAN
=head1 VERSION
version 6.037
=head1 SYNOPSIS
If loaded, this plugin will allow the F<release> command to upload to the CPAN.
=head1 DESCRIPTION
This plugin looks for configuration in your C<dist.ini> or (more
likely) C<~/.dzil/config.ini>:
[%PAUSE]
username = YOUR-PAUSE-ID
( run in 1.979 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )