use File::Spec ();
use Config;
-our $VERSION = '2.000003'; # 2.0.3
+our $VERSION = '2.000004'; # 2.0.4
$VERSION = eval $VERSION;
sub import {
my ($class, @args) = @_;
+ push @args, @ARGV
+ if $0 eq '-';
my @steps;
my %opts;
sub bins { $_[0]->{bins} ||= [ \'PATH' ] }
sub roots { $_[0]->{roots} ||= [ \'PERL_LOCAL_LIB_ROOT' ] }
sub extra { $_[0]->{extra} ||= {} }
-sub shelltype { $_[0]->{shelltype} ||= $_[0]->guess_shelltype }
sub no_create { $_[0]->{no_create} }
my $_archname = $Config{archname};
}
$out .= $self->$build_method($name, $value);
}
- my $wrap_method = 'wrap_' . $self->shelltype . '_output';
+ my $wrap_method = "wrap_${shelltype}_output";
if ($self->can($wrap_method)) {
return $self->$wrap_method($out);
}
my $value = $class->_interpolate($args, '$env:%s', '"', '`%s');
if (!$value) {
- return qq{Remove-Item Env:\\$name;\n};
+ return qq{Remove-Item -ErrorAction 0 Env:\\$name;\n};
}
my $maybe_path_sep = qq{\$(if("\$env:$name"-eq""){""}else{"$_path_sep"})};
return $out || " \n";
}
+sub build_fish_env_declaration {
+ my ($class, $name, $args) = @_;
+ my $value = $class->_interpolate($args, '$%s', '"', '\\%s');
+ if (!defined $value) {
+ return qq{set -e $name;\n};
+ }
+ $value =~ s/$_path_sep/ /g;
+ qq{set -x $name $value;\n};
+}
+
sub _interpolate {
my ($class, $args, $var_pat, $escape, $escape_pat) = @_;
return
for ($shellbin) {
return
- /csh/ ? 'csh'
- : /command\.com/i ? 'cmd'
- : /cmd\.exe/i ? 'cmd'
- : /4nt\.exe/i ? 'cmd'
- : /powershell\.exe/i ? 'powershell'
- : 'bourne';
+ /csh$/ ? 'csh'
+ : /fish/ ? 'fish'
+ : /command(?:\.com)?$/i ? 'cmd'
+ : /cmd(?:\.exe)?$/i ? 'cmd'
+ : /4nt(?:\.exe)?$/i ? 'cmd'
+ : /powershell(?:\.exe)?$/i ? 'powershell'
+ : 'bourne';
}
}