CPAN-Mini-Inject
view release on metacpan or search on metacpan
lib/CPAN/Mini/Inject.pm view on Meta::CPAN
site setting, or, if the site has not be set (or was set to undef),
returns the empty string.
=cut
sub site {
no warnings;
my $self = shift;
if ( @_ ) { $self->{site} = shift }
$self->{site} // '';
}
=item C<testremote>
Test each site listed in the remote parameter of the config file by
performing a get on each site in order for authors/01mailrc.txt.gz.
The first site to respond successfully is set as the instance variable
site.
print "$mcpi->{site}\n"; # ftp://ftp.cpan.org/pub/CPAN
C<testremote> accepts an optional parameter to enable verbose mode.
=cut
sub testremote {
my $self = shift;
my $verbose = shift;
$self->site( undef ) if $self->site;
$ENV{FTP_PASSIVE} = 1 if ( $self->config->get( 'passive' ) );
for my $site ( split( /\s+/, $self->config->get( 'remote' ) ) ) {
$site .= '/' unless ( $site =~ m/\/$/ );
print "Testing site: $site\n" if ( $verbose );
if ( get( $site . 'authors/01mailrc.txt.gz' ) ) {
$self->site( $site );
print "\n$site selected.\n" if ( $verbose );
last;
}
}
croak "$0: unable to connect to any remote site" unless $self->site;
return $self;
}
=item C<update_mirror>
This is a subclass of CPAN::Mini.
=cut
sub update_mirror {
my $self = shift;
my %options = @_;
croak sprintf "$0: local directory <%s> is not writable. Cannot update mirror.", $self->config->get( 'local' )
unless -w $self->config->get('local');
$ENV{FTP_PASSIVE} = 1 if $self->config->get( 'passive' );
$options{local} ||= $self->config->get( 'local' );
$options{trace} ||= 0;
$options{skip_perl} ||= $self->config->get( 'perl' ) || 1;
$options{skip_cleanup} ||= $self->config->get( 'skip_cleanup' ) || 0;
# module_filters, log_level, and force
my @extra = grep { defined $self->config->get($_) } qw(module_filters log_level force);
$options{$_} = $self->config->get($_) for @extra;
$self->testremote( $options{trace} )
unless ( $self->site || $options{remote} );
$options{remote} ||= $self->site;
$options{dirmode} ||= oct( $self->config->get( 'dirmode' )
|| sprintf( '0%o', 0777 & ~umask ) );
CPAN::Mini->update_mirror( %options );
}
=item C<add>
Add a new distribution to the repository. The C<add> method copies the
distribution file into the repository with the same structure as a
CPAN site. For example, F<CPAN-Mini-Inject-0.01.tar.gz> with author
C<SSORICHE> is copied to F<MYCPAN/authors/id/S/SS/SSORICHE>. add
creates the required directory structure below the repository.
Packages found in the distribution will be added to the module list
For example both C<CPAN::Mini::Inject> and
C<CPAN::Mini::Inject::Config> will be added to the F<modulelist> file
in the repository.
Packages will be looked for in the C<provides> key of the META file if
present, otherwise the files in the dist will be searched. See
L<Dist::Metadata> for more information.
=over 4
=item * module
(optional) The package name of the module to add. The distribution
file will be searched for modules but you can specify the main one
explicitly.
=item * authorid
(required) The CPAN ID of the module's author. Since this isn't
actually CPAN, the ID does not need to exist on CPAN. Typically, this
ID uses C<[A-Z]> and is three to ten letters. This is not enforced,
but other CPAN tools may not like other sorts of names.
( run in 1.249 second using v1.01-cache-2.11-cpan-e1769b4cff6 )