Changeset 159
- Timestamp:
- 06/02/04 02:46:15 (4 years ago)
- Files:
-
- manage/trunk/CLI/CLI.pm (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
manage/trunk/CLI/CLI.pm
r158 r159 121 121 $help .= $format->format($cmd{HELPHEADER}) . "\n" if $cmd{HELPHEADER}; 122 122 123 my $process_help = sub { 124 my $help = shift; 125 my $commands = shift; 126 my $command = shift; 127 my $type = ref($help); 128 129 if ($type eq 'ARRAY') { 130 $commands->{$help->[0]} = $help->[1]; 131 } elsif ($type eq 'CODE') { 132 %$commands = (%$commands, $help->()); 133 } elsif (!$type) { 134 $commands->{$command} = $help; 135 } 136 }; 137 123 138 for my $key (keys %cmd) { 124 139 next if $key =~ /^[A-Z]+$/; 125 140 126 141 if (ref($cmd{$key}) eq 'HASH' and $cmd{$key}->{HELP}) { 127 my ($name, $hstr); 128 my $type = ref($cmd{$key}->{HELP}); 129 130 if ($type eq 'CODE') { 131 %commands = (%commands, $cmd{$key}->{HELP}->()); 132 } else { 133 if ($type eq 'ARRAY') { 134 ($name, $hstr) = @{$cmd{$key}->{HELP}}; 135 } else { 136 $name = $key; 137 $hstr = $cmd{$key}->{HELP}; 138 } 139 $commands{$name} = $hstr; 140 } 142 $process_help->($cmd{$key}->{HELP}, \%commands, $key); 141 143 } else { 142 144 $commands{$key} = ''; … … 149 151 if ($cmd{ACTION}) { 150 152 if (ref($cmd{ACTION}) eq 'HASH' and $cmd{ACTION}->{HELP}) { 151 if (ref($cmd{ACTION}->{HELP}) eq 'ARRAY') { 152 $commands{'<eol>'} = $cmd{ACTION}->{HELP}->[1]; 153 } elsif (!ref($cmd{ACTION}->{HELP})) { 154 $commands{'<eol>'} = $cmd{ACTION}->{HELP}; 155 } else { 156 $commands{'<eol>'} = "\e[31m\e[1m(expected SCALAR or ARRAY help, not CODE)\e[0m"; 157 } 153 $process_help->($cmd{ACTION}->{HELP}, \%commands, '<eol>'); 158 154 } elsif ($cmd{ACTIONHELP}) { 159 155 $commands{'<eol>'} = $cmd{ACTIONHELP}; 160 156 } elsif ($cmd{HELP}) { 161 if (ref($cmd{HELP}) eq 'ARRAY') { 162 $commands{'<eol>'} = $cmd{HELP}->[1]; 163 } elsif (!ref($cmd{HELP})) { 164 $commands{'<eol>'} = $cmd{HELP}; 165 } else { 166 $commands{'<eol>'} = "\e[31m\e[1m(expected SCALAR or ARRAY help, not CODE)\e[0m"; 167 } 157 $process_help->($cmd{HELP}, \%commands, '<eol>'); 168 158 } else { 169 159 $commands{'<eol>'} = "\e[31m\e[1m(need ACTIONHELP, ACTION->HELP or HELP entry)\e[0m"; … … 225 215 if (defined($token)) { 226 216 my @candidates = grep(/^(?:\d+\)(?:\$))?$token/, keys(%cmd)); 217 227 218 $unique = 1 if @candidates == 1 and $candidates[0] eq $key; 228 219 }
