package ShipIt::Step::UploadCPAN; use strict; use base 'ShipIt::Step'; use ShipIt::Util qw(bool_prompt); use File::Spec; sub init { my ($self, $conf) = @_; my $exe = ''; foreach my $dir (File::Spec->path) { $exe = 'cpan-upload-http'; last if -x File::Spec->catfile($dir, $exe); $exe = 'cpan-upload'; last if -x File::Spec->catfile($dir, $exe); } die "cpan-upload-http not found\n" unless $exe; $self->{exe} = $exe; $self->{user} = $conf->value("UploadCPAN.user"); } sub run { my ($self, $state) = @_; my $distfile = $state->distfile; die "No distfile was created!" unless $distfile; die "distfile $distfile no longer exists!" unless -e $distfile; if ($state->dry_run) { warn "*** DRY RUN, not uploading to CPAN!\n"; return; } return unless bool_prompt("Upload to CPAN?", "y"); my @options; push @options, "-u", $self->{user}, "-p", "" # reset password in case you have ~/.pause if $self->{user}; system($self->{exe}, @options, $distfile) and die "Upload failed.\n"; } 1;