Changeset 2213 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Cli/Base.pm
- Timestamp:
- 02/21/19 19:50:37 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Cli/Base.pm
r2212 r2213 12 12 use Text::ParseWords; 13 13 use Getopt::Long; 14 use Pod::Select; 15 use Pod::Text::Termcap; 16 use File::Temp; 14 17 15 18 =head1 NAME … … 146 149 $self->add_func('exit', { help => "exit current mode", 147 150 code => sub { return "EXIT" }, }); 151 152 153 =head2 help 154 155 help [command] - print help about command 156 157 =cut 158 148 159 $self->add_func('help', { 149 help => 'help [command] - print help about command',150 160 completion => sub { 151 161 if (!$_[2]) { return sort keys %{ $_[0]->{funcs} || {}} } 152 162 }, 153 163 code => sub { 154 my ($self, $name) = @_; 155 if (!$name) { 156 print $OUT join(', ', sort keys %{ $self->{funcs} || {}}) . "\n"; 157 } elsif ($self->{funcs}{$name}{alias}) { 158 print $OUT "$name is an alias for " . join(' ', 159 @{$self->{funcs}{$name}{alias}}) . "\n"; 160 } elsif ($self->{funcs}{$name}{help}) { 161 print $OUT $self->{funcs}{$name}{help} . "\n"; 162 } else { 163 print $OUT "No help availlable\n"; 164 } 164 my $env = shift; 165 166 $env->Help(@_); 165 167 }, 166 168 }); … … 283 285 sub add_func { 284 286 my ($self, $name, $param) = @_; 287 my (undef, $file) = caller(0); 288 $param->{podfile} = $file; 285 289 $self->{funcs}{$name} = $param; 290 } 291 292 =head2 Help 293 294 Display help of given function 295 296 =cut 297 298 sub Help { 299 my ($self, $name) = @_; 300 if (!$name) { 301 $self->print(join(', ', sort keys %{ $self->{funcs} || {}}) . "\n"); 302 } elsif ($self->{funcs}{$name}{alias}) { 303 $self->print("$name is an alias for " . join(' ', @{$self->{funcs}{$name}{alias}}) . "\n"); 304 } elsif ($self->{funcs}{$name}{help}) { 305 $self->print($self->{funcs}{$name}{help}); 306 } else { 307 my $fh = File::Temp->new(); 308 my $parser = Pod::Text::Termcap->new( sentence => 0, width => 78 ); 309 310 podselect( 311 {-output => $fh, -sections => ["CLI FUNCTIONS/\Q$name"]}, 312 $self->{funcs}{$name}{podfile} 313 ); 314 seek($fh, 0, 0); 315 $parser->parse_from_filehandle($fh, $self->Context->Out); 316 } 286 317 } 287 318 … … 330 361 my ($self, $name, @args) = @_; 331 362 return if (!$name); 332 if (!exists($self->{funcs}{$name})) { 363 364 if (grep { m/^(-h|--help)$/ } @args) { 365 $self->Help($name); 366 } elsif (!exists($self->{funcs}{$name})) { 333 367 $self->print("No command $name found\n"); 334 368 } elsif ($self->{funcs}{$name}{alias}) {
Note: See TracChangeset
for help on using the changeset viewer.