X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Flocal%2Flib.pm;h=38ad56f7ee4597ea9a297b01aae8f7a20e4b077b;hb=6611a9dcfa568b663477a6411d9d9536906c8d87;hp=a8fc12f156252cdffc185ca5ddb0a91692dbbe74;hpb=fe8aa69b67d4085cc1c7a543a704c26f535a32b8;p=p5sagit%2Flocal-lib.git diff --git a/lib/local/lib.pm b/lib/local/lib.pm index a8fc12f..38ad56f 100644 --- a/lib/local/lib.pm +++ b/lib/local/lib.pm @@ -102,7 +102,6 @@ sub libs { $_[0]->{libs} ||= [ \'PERL5LIB' ] } 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}; @@ -364,7 +363,7 @@ sub environment_vars_string { } $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); } @@ -442,6 +441,16 @@ sub wrap_powershell_output { 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 @@ -557,6 +566,7 @@ sub guess_shelltype { for ($shellbin) { return /csh$/ ? 'csh' + : /fish/ ? 'fish' : /command(?:\.com)?$/i ? 'cmd' : /cmd(?:\.exe)?$/i ? 'cmd' : /4nt(?:\.exe)?$/i ? 'cmd'