From 89880e320d9b9752f76bbb791924487dc9da2ca3 Mon Sep 17 00:00:00 2001 From: "docelic@crystallabs.io" Date: Mon, 29 Apr 2019 23:10:00 +0000 Subject: [PATCH] Make aliases be auto-detected and inserted into help texts. FossilOrigin-Name: 6911ac8e0c1a62dbd2eb319ee83d953eae7f86312835f14cd81bf5ccdac06d39 --- shelldap | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/shelldap b/shelldap index 0043bf8..cca20c6 100755 --- a/shelldap +++ b/shelldap @@ -304,8 +304,6 @@ copied and then an LDAP moddn() is performed. copy uid=mahlon ou=Others,dc=example,o=company copy uid=mahlon,ou=People,dc=example,o=company uid=mahlon,ou=Others,dc=example,o=company -aliased to: cp - =head2 create Create an entry. @@ -321,8 +319,6 @@ and added to the LDAP directory. create top person organizationalPerson inetOrgPerson posixAccount -aliased to: touch - =head2 delete Remove an entry. @@ -335,8 +331,6 @@ for review before delete. delete uid=ma* rm -v uid=mahlon,ou=People,dc=example,o=company l=office -aliased to: rm - =head2 edit Edit an entry in an external editor. @@ -347,8 +341,6 @@ directory. edit uid=mahlon -aliased to: vi - =head2 env Print values of configurable shelldap variables. @@ -366,8 +358,6 @@ The search string must be a valid LDAP filter. grep uid=mahlon ou=People grep -r (&(uid=mahlon)(objectClass=*)) - aliased to: search - =head2 inspect View schema and flags for an entry or objectClass. @@ -394,8 +384,6 @@ List directory contents. Globbing is supported. -aliased to: ls - ls -l ls -lR uid=mahlon list uid=m* @@ -425,8 +413,6 @@ Move (rename) entry. Usage is identical to B. -aliased to: mv - =head2 passwd Change user password. @@ -2413,6 +2399,7 @@ sub run_inspect local $| = 1; my %aliases; + # In first pass, only identify aliases. while(my($cmd, $data) = each %cmd_map ) { # If command is an alias, it is enough to mark it as such. if( $$data[0]) { @@ -2420,7 +2407,12 @@ sub run_inspect push @{$aliases{$$data[0]}}, $cmd; # If it is a real command, let's do more work. - } else { + } + } + + # In second pass, deal with non-aliases. + while(my($cmd, $data) = each %cmd_map ) { + if( !$$data[0]) { # If completer is defined, set it. if( $$data[1]) { my $comp_sub = "comp_$cmd"; @@ -2438,6 +2430,10 @@ sub run_inspect $summary =~ s/\s+/ /s; } my $help = join "\n", @pod; + if( $aliases{$cmd}) { + local $" = ', '; + $help .= "\n\n Aliases: @{$aliases{$cmd}}\n" + } my $helpfunc = sub { "$help\n" }; *{"help_$cmd"} = \&$helpfunc; @@ -2447,6 +2443,7 @@ sub run_inspect } } + # In third pass, actually register found aliases. while(my($cmd,$aliases) = each %aliases) { my $aliasfunc = sub { @$aliases }; *{"alias_$cmd"} = \&$aliasfunc;