remove the remainder of the shelltype attribute
[p5sagit/local-lib.git] / lib / local / lib.pm
index 1089963..38ad56f 100644 (file)
@@ -8,11 +8,13 @@ use 5.006;
 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;
@@ -100,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};
@@ -362,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);
   }
@@ -440,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
@@ -555,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'