my ($class, @args) = @_;
my @steps;
+ my %opts;
while (@args) {
my $arg = shift @args;
elsif ( $arg eq '--deactivate-all' ) {
push @steps, ['deactivate_all'];
}
+ elsif ( $arg =~ /^--shelltype(?:=(.*))?$/ ) {
+ my $shell = defined $1 ? $1 : shift @args;
+ $opts{shelltype} = $shell;
+ }
elsif ( $arg =~ /^--/ ) {
die "Unknown import argument: $arg";
}
push @steps, ['activate', undef];
}
- my $self = $class->new;
+ my $self = $class->new(%opts);
for (@steps) {
my ($method, @args) = @$_;
my $value = $class->_interpolate($args, '%', '%');
$value =~ s/"/\\"/g
if defined $value;
- return defined($value) ? qq{set ${name} "${value}"\n} : qq{set ${name}=\n};
+ return qq{set $name=} . (defined($value) ? qq{"$value"} : '') . "\n";
}
+sub build_powershell_env_declaration {
+ my ($class, $name, $args) = @_;
+ my $value = $class->_interpolate($args, '$env:');
+ if (defined $value) {
+ $value =~ s/"/\\"/g;
+ return qq{\$env:$name = "$value"\n};
+ }
+ return "Remove-Item Env:\\$name\n";
+}
+
sub _interpolate {
my ($class, $args, $start, $end) = @_;