CPANPLUS
view release on metacpan or search on metacpan
lib/CPANPLUS/Internals/Source.pm view on Meta::CPAN
);
return $index;
}
=head2 $file = $cb->_remove_custom_module_source( uri => URI, [verbose => BOOL] );
Removes a custom index file based on the URI provided.
Returns the full path to the index file on success or false on failure.
=cut
sub _remove_custom_module_source {
my $self = shift;
my $conf = $self->configure_object;
my %hash = @_;
my($verbose,$uri);
my $tmpl = {
verbose => { default => $conf->get_conf('verbose'),
store => \$verbose },
uri => { required => 1, store => \$uri }
};
check( $tmpl, \%hash ) or return;
### use uri => local, instead of the other way around
my %files = reverse $self->__list_custom_module_sources;
### On VMS the case of key to %files can be either exact or lower case
### XXX abstract this lookup out? --kane
my $file = $files{ $uri };
$file = $files{ lc $uri } if !defined($file) && ON_VMS;
unless (defined $file) {
error(loc("No such custom source '%1'", $uri));
return;
};
1 while unlink $file;
if( IS_FILE->( $file ) ) {
error(loc("Could not remove index file '%1' for custom source '%2'",
$file, $uri));
return;
}
msg(loc("Successfully removed index file for '%1'", $uri), $verbose);
return $file;
}
=head2 %files = $cb->__list_custom_module_sources
This method scans the 'custom-sources' directory in your base directory
for additional sources to include in your module tree.
Returns a list of key value pairs as follows:
/full/path/to/source/file%3Fencoded => http://decoded/mirror/path
=cut
sub __list_custom_module_sources {
my $self = shift;
my $conf = $self->configure_object;
my($verbose);
my $tmpl = {
verbose => { default => $conf->get_conf('verbose'),
store => \$verbose },
};
my $dir = File::Spec->catdir(
$conf->get_conf('base'),
$conf->_get_build('custom_sources'),
);
unless( IS_DIR->( $dir ) ) {
msg(loc("No '%1' dir, skipping custom sources", $dir), $verbose);
return;
}
### unencode the files
### skip ones starting with # though
my %files = map {
my $org = $_;
my $dec = $self->_uri_decode( uri => $_ );
File::Spec->catfile( $dir, $org ) => $dec
} grep { $_ !~ /^#/ } READ_DIR->( $dir );
return %files;
}
=head2 $bool = $cb->__update_custom_module_sources( [verbose => BOOL] );
Attempts to update all the index files to your custom module sources.
If the index is missing, and it's a C<file://> uri, it will generate
a new local index for you.
Return true on success, false on failure.
=cut
sub __update_custom_module_sources {
my $self = shift;
my $conf = $self->configure_object;
my %hash = @_;
my $verbose;
my $tmpl = {
verbose => { default => $conf->get_conf('verbose'),
store => \$verbose }
};
check( $tmpl, \%hash ) or return;
my %files = $self->__list_custom_module_sources;
( run in 0.700 second using v1.01-cache-2.11-cpan-39bf76dae61 )