Support arrays/hashes in 'env' (WIP)
authorDavor Ocelic <docelic@crystallabs.io>
Sun, 05 May 2019 10:14:18 +0200
changeset 116 6a0b1209dafa
parent 115 5ace587c3ea3
child 117 eb1bcbaf9763
Support arrays/hashes in 'env' (WIP) - 'env' now prints 'attributes' array - 'env' output now supports any data type, not just strings - option --attributes on command line properly overrides config values The remaining thing to do is to support 'setenv' to work with non-strings too.
shelldap
--- a/shelldap	Sun May 05 09:54:28 2019 +0200
+++ b/shelldap	Sun May 05 10:14:18 2019 +0200
@@ -624,7 +624,7 @@
 
 	$self->{'editor'} = $conf->{'editor'} || $ENV{'EDITOR'} || 'vi';
 	$self->{'pager'}  = $conf->{'pager'}  || $ENV{'PAGER'}  || 'less';
-	$self->{'env'}	  = [ qw/ debug cacheage timeout / ];
+	$self->{'env'}	  = [ qw/ debug cacheage timeout attributes / ];
 
 	# let autocomplete work with the '=' character
 	my $term = $self->term();
@@ -2075,11 +2075,8 @@
 {
 	my $self = shift;
 
-	foreach ( sort @{ $self->{'env'} } ) {
-		print "$_: ";
-		print $conf->{$_} ? $conf->{$_} : 0; 
-		print "\n"
-	}
+	print YAML::Syck::Dump( { map { $_, $conf->{$_}} sort @{ $self->{'env'}} } );
+	print "\n"
 }
 
 
@@ -2659,7 +2656,7 @@
 	'binddn|D=s',
 	'basedn|b=s',
 	'cacheage=i',
-	'attributes=s@',
+	'cmdline_attributes|attributes=s@',
 	'paginate=i',
 	'promptpass|W',
 	'timeout=i',
@@ -2696,6 +2693,11 @@
 $conf->{'timeout'}    ||= 10;
 $conf->{'attributes'} ||= ['*'];
 
+# Allow command line option --attributes to override settings from
+# config file.
+if($conf->{'cmdline_attributes'}) {
+	$conf->{'attributes'} = $conf->{'cmdline_attributes'}
+}
 
 # create and enter shell loop while also handling Ctrl+C correctly.
 my $shell = LDAP::Shell->new;