X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Flocal%2Flib.pm;h=ee36e1ad92201e190ed380169994398cb1a201dc;hb=45277afe3312a0bd747cc1a8770c8c385a34b59a;hp=9a8e93fd36ccef5dddc18d230f65583fc814de2c;hpb=b37e5f4a03fd06e4369c89d257560798cb7c9417;p=p5sagit%2Flocal-lib.git diff --git a/lib/local/lib.pm b/lib/local/lib.pm index 9a8e93f..ee36e1a 100644 --- a/lib/local/lib.pm +++ b/lib/local/lib.pm @@ -321,13 +321,20 @@ sub environment_vars_string_for { && ${$value->[0]} eq $name) { next; } - if (!ref $value - && defined $value ? $value eq $ENV{$name} : !defined $ENV{$name} + if ( + !ref $value + and defined $value + ? (defined $ENV{$name} && $value eq $ENV{$name}) + : !defined $ENV{$name} ) { next; } $out .= $self->$build_method($name, $value); } + my $wrap_method = 'wrap_' . $self->shelltype . '_output'; + if ($self->can($wrap_method)) { + return $self->$wrap_method($out); + } return $out; } @@ -350,15 +357,19 @@ sub build_cmd_env_declaration { my ($class, $name, $args) = @_; my $value = $class->_interpolate($args, '%', '%', qr([()!^"<>&|]), '^'); defined $value - ? qq{set $name=$value\n} - : qq{set $name=\n}; + ? qq{\@set $name=$value\n} + : qq{\@set $name=\n}; } sub build_powershell_env_declaration { my ($class, $name, $args) = @_; my $value = $class->_interpolate($args, '$env:', '', '"', '`'); defined $value - ? qq{\$env:$name = "$value"\n} - : "Remove-Item Env:\\$name\n"; + ? qq{\$env:$name = "$value";\n} + : "Remove-Item Env:\\$name;\n"; +} +sub wrap_powershell_output { + my ($class, $out) = @_; + return $out || " \n"; }