CPAN
view release on metacpan or search on metacpan
lib/CPAN/FirstTime.pm view on Meta::CPAN
print {$fh} "\n$shellvars";
close $fh;
$munged_rc++;
}
}
# Warn at exit time
if ($munged_rc) {
push @{$CPAN::META->_exit_messages}, << "HERE";
*** Remember to restart your shell before running cpan again ***
HERE
}
else {
push @{$CPAN::META->_exit_messages}, << "HERE";
*** Remember to add these environment variables to your shell config
and restart your shell before running cpan again ***
$shellvars
HERE
}
}
{
my %shell_rc_map = (
map { $_ => ".${_}rc" } qw/ bash tcsh csh /,
map { $_ => ".profile" } qw/dash ash sh/,
zsh => ".zshenv",
);
sub _find_shell_config {
my $shell = File::Basename::basename($CPAN::Config->{shell});
if ( my $rc = $shell_rc_map{$shell} ) {
my $path = File::Spec->catfile($ENV{HOME}, $rc);
return $path if -w $path;
}
}
}
sub _local_lib_inc_path {
return File::Spec->catdir(_local_lib_path(), qw/lib perl5/);
}
sub _local_lib_path {
return File::Spec->catdir(_local_lib_home(), 'perl5');
}
# Adapted from resolve_home_path() in local::lib -- this is where
# local::lib thinks the user's home is
{
my $local_lib_home;
sub _local_lib_home {
$local_lib_home ||= File::Spec->rel2abs( do {
if ($CPAN::META->has_usable("File::HomeDir") && File::HomeDir->VERSION >= 0.65) {
File::HomeDir->my_home;
} elsif (defined $ENV{HOME}) {
$ENV{HOME};
} else {
(getpwuid $<)[7] || "~";
}
});
}
}
sub _do_pick_mirrors {
local *_real_prompt;
*_real_prompt = \&CPAN::Shell::colorable_makemaker_prompt;
$CPAN::Frontend->myprint($prompts{urls_intro});
# Only prompt for auto-pick if Net::Ping is new enough to do timings
my $_conf = 'n';
if ( $CPAN::META->has_usable("Net::Ping") && CPAN::Version->vgt(Net::Ping->VERSION, '2.13')) {
$_conf = prompt($prompts{auto_pick}, "yes");
} else {
prompt("Autoselection disabled due to Net::Ping missing or insufficient. Please press ENTER");
}
my @old_list = @{ $CPAN::Config->{urllist} };
if ( $_conf =~ /^y/i ) {
conf_sites( auto_pick => 1 ) or bring_your_own();
}
else {
_print_urllist('Current') if @old_list;
my $msg = scalar @old_list
? "\nWould you like to edit the urllist or pick new mirrors from a list?"
: "\nWould you like to pick from the CPAN mirror list?" ;
my $_conf = prompt($msg, "yes");
if ( $_conf =~ /^y/i ) {
conf_sites();
}
bring_your_own();
}
_print_urllist('New');
}
sub _init_external_progs {
my($matcher,$args) = @_;
my $PATH = $args->{path};
my @external_progs = @{ $args->{progs} };
my $shortcut = $args->{shortcut};
my $showed_make_warning;
if (!$matcher or "@external_progs" =~ /$matcher/) {
my $old_warn = $^W;
local $^W if $^O eq 'MacOS';
local $^W = $old_warn;
my $progname;
for $progname (@external_progs) {
next if $matcher && $progname !~ /$matcher/;
if ($^O eq 'MacOS') {
$CPAN::Config->{$progname} = 'not_here';
next;
}
my $progcall = $progname;
unless ($matcher) {
# we really don't need ncftp if we have ncftpget, but
# if they chose this dialog via matcher, they shall have it
next if $progname eq "ncftp" && $CPAN::Config->{ncftpget} gt " ";
}
my $path = $CPAN::Config->{$progname}
( run in 1.745 second using v1.01-cache-2.11-cpan-98e64b0badf )