App-perlbrew
view release on metacpan or search on metacpan
lib/App/perlbrew.pm view on Meta::CPAN
my $privlib = $self->do_capture_current_perl(
'-MConfig',
'-e',
'print $Config{privlibexp}',
);
my $locallib;
if ($self->current_lib) {
require local::lib;
my ($current_lib) = grep { $_->{is_current} } $self->local_libs();
my @llpaths = sort { length($a) <=> length($b) }
local::lib->lib_paths_for( $current_lib->{dir} );
$locallib = $llpaths[0];
}
my $perlversion = $self->do_capture_current_perl(
'-MConfig',
'-e',
'print $Config{version}',
);
my @cmd = (
$path_pp,
"-B", # core modules
"-a", "$privlib;$perlversion",
"-a", "$sitelib;$perlversion",
($locallib ? ("-a", "$locallib;$perlversion") : ()),
"-z", "9",
"-o", $output,
$input,
);
$self->do_system(@cmd);
}
sub whereis_in_env {
my ($self, $program, $env) = @_;
my %env = $self->perlbrew_env( $env );
my @paths = split /:/, $env{PERLBREW_PATH};
my ($path) = grep { -x $_ } map { App::Perlbrew::Path->new($_, $program) } @paths;
return $path;
}
sub BASHRC_CONTENT() {
return
"export PERLBREW_SHELLRC_VERSION=$VERSION\n"
. ( exists $ENV{PERLBREW_ROOT} ? "export PERLBREW_ROOT=$PERLBREW_ROOT\n" : "" ) . "\n"
. <<'RC';
__perlbrew_reinit() {
if [[ ! -d "$PERLBREW_HOME" ]]; then
mkdir -p "$PERLBREW_HOME"
fi
[ -f "$PERLBREW_HOME/init" ] && rm "$PERLBREW_HOME/init"
echo '# DO NOT EDIT THIS FILE' > "$PERLBREW_HOME/init"
command perlbrew env $1 | \grep PERLBREW_ >> "$PERLBREW_HOME/init"
. "$PERLBREW_HOME/init"
__perlbrew_set_path
}
__perlbrew_purify () {
local path patharray outsep
IFS=: read -r${BASH_VERSION+a}${ZSH_VERSION+A} patharray <<< "$1"
for path in "${patharray[@]}" ; do
case "$path" in
(*"$PERLBREW_HOME"*) ;;
(*"$PERLBREW_ROOT"*) ;;
(*) printf '%s' "${outsep:-}$path" ; outsep=: ;;
esac
done
}
__perlbrew_set_path () {
export MANPATH=${PERLBREW_MANPATH:-}${PERLBREW_MANPATH:+:}$(__perlbrew_purify "$(manpath 2>/dev/null)")
export PATH=${PERLBREW_PATH:-$PERLBREW_ROOT/bin}:$(__perlbrew_purify "$PATH")
if [[ -o hashall ]] ; then
hash -r
fi
}
__perlbrew_set_env() {
local code
code="$($perlbrew_command env $@)" || return $?
eval "$code"
}
__perlbrew_activate() {
[[ -n $(alias perl 2>/dev/null) ]] && unalias perl 2>/dev/null
if [[ -n "${PERLBREW_PERL:-}" ]]; then
__perlbrew_set_env "${PERLBREW_PERL:-}${PERLBREW_LIB:+@}${PERLBREW_LIB:-}"
fi
__perlbrew_set_path
}
__perlbrew_deactivate() {
__perlbrew_set_env
unset PERLBREW_PERL
unset PERLBREW_LIB
__perlbrew_set_path
}
perlbrew () {
local exit_status
local short_option
export SHELL
if [[ $1 == -* ]]; then
short_option=$1
shift
else
short_option=""
fi
case $1 in
lib/App/perlbrew.pm view on Meta::CPAN
(switch-off)
__perlbrew_deactivate
__perlbrew_reinit
echo "perlbrew is switched off."
;;
(*)
command perlbrew $short_option "$@"
exit_status=$?
;;
esac
hash -r
return ${exit_status:-0}
}
[[ -z "${PERLBREW_ROOT:-}" ]] && export PERLBREW_ROOT="$HOME/perl5/perlbrew"
[[ -z "${PERLBREW_HOME:-}" ]] && export PERLBREW_HOME="$HOME/.perlbrew"
if [[ ! -n "${PERLBREW_SKIP_INIT:-}" ]]; then
if [[ -f "${PERLBREW_HOME:-}/init" ]]; then
. "$PERLBREW_HOME/init"
fi
fi
if [[ -f "${PERLBREW_ROOT:-}/bin/perlbrew" ]]; then
perlbrew_command="${PERLBREW_ROOT:-}/bin/perlbrew"
else
perlbrew_command="perlbrew"
fi
__perlbrew_activate
RC
}
sub BASH_COMPLETION_CONTENT() {
return <<'COMPLETION';
if [[ -n ${ZSH_VERSION-} ]]; then
autoload -U +X bashcompinit && bashcompinit
fi
export PERLBREW="command perlbrew"
_perlbrew_compgen()
{
COMPREPLY=( $($PERLBREW compgen $COMP_CWORD ${COMP_WORDS[*]}) )
}
complete -F _perlbrew_compgen perlbrew
COMPLETION
}
sub PERLBREW_FISH_CONTENT {
return "set -x PERLBREW_SHELLRC_VERSION $VERSION\n" . <<'END';
function __perlbrew_reinit
if not test -d "$PERLBREW_HOME"
mkdir -p "$PERLBREW_HOME"
end
echo '# DO NOT EDIT THIS FILE' > "$PERLBREW_HOME/init"
command perlbrew env $argv[1] | \grep PERLBREW_ >> "$PERLBREW_HOME/init"
__source_init
__perlbrew_set_path
end
function __perlbrew_set_path
set -l MANPATH_WITHOUT_PERLBREW (perl -e 'print join ":", grep { index($_, $ENV{PERLBREW_HOME}) < 0 } grep { index($_, $ENV{PERLBREW_ROOT}) < 0 } split/:/,qx(manpath 2> /dev/null);')
if test -n "$PERLBREW_MANPATH"
set -l PERLBREW_MANPATH $PERLBREW_MANPATH":"
set -x MANPATH {$PERLBREW_MANPATH}{$MANPATH_WITHOUT_PERLBREW}
else
set -x MANPATH $MANPATH_WITHOUT_PERLBREW
end
set -l PATH_WITHOUT_PERLBREW (eval $perlbrew_command display-pristine-path | perl -pe'y/:/ /')
# silencing stderr in case there's a non-existent path in $PATH (see GH#446)
if test -n "$PERLBREW_PATH"
set -x PERLBREW_PATH (echo $PERLBREW_PATH | perl -pe 'y/:/ /' )
eval set -x PATH $PERLBREW_PATH $PATH_WITHOUT_PERLBREW 2> /dev/null
else
eval set -x PATH $PERLBREW_ROOT/bin $PATH_WITHOUT_PERLBREW 2> /dev/null
end
end
function __perlbrew_set_env
set -l code (eval $perlbrew_command env $argv | perl -pe 's/^(export|setenv)/set -xg/; s/=/ /; s/^unset(env)* (.*)/if test -n "\$$2"; set -eg $2; end/; s/$/;/; y/:/ /')
if test -z "$code"
return 0;
else
eval $code
end
end
function __perlbrew_activate
functions -e perl
if test -n "$PERLBREW_PERL"
if test -z "${PERLBREW_LIB:-}"
__perlbrew_set_env $PERLBREW_PERL
else
__perlbrew_set_env $PERLBREW_PERL@${PERLBREW_LIB:-}
end
end
__perlbrew_set_path
end
function __perlbrew_deactivate
__perlbrew_set_env
set -x PERLBREW_PERL
set -x PERLBREW_LIB
set -x PERLBREW_PATH
__perlbrew_set_path
end
function perlbrew
test -z "$argv"
( run in 0.457 second using v1.01-cache-2.11-cpan-99c4e6809bf )