Changeset 848 for LATMOS-Accounts/lib/LATMOS/Accounts/Cli.pm
- Timestamp:
- 03/29/10 01:35:03 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LATMOS-Accounts/lib/LATMOS/Accounts/Cli.pm
r847 r848 1 1 package LATMOS::Accounts::Cli; 2 3 # $Id$ 2 4 3 5 use strict; … … 13 15 sub globalenv { 14 16 my ($labase) = @_; 15 my $env = LATMOS::Accounts::Cli->new({ prompt => sub { "LAcli > " }, },17 my $env = LATMOS::Accounts::Cli->new({ prompt => sub { $_[0]->base->label . " cli > " }, }, 16 18 $labase); 17 19 $env->add_func('ls', { … … 95 97 { 96 98 prompt => sub { 97 sprintf("%s (%s) > ", 99 sprintf("%s %s/%s > ", 100 $_[0]->base->label, 98 101 $_[0]->{_otype}, 99 @{$_[0]->{_objects}} > 1 ? '...' : $_[0]->{_objects}[0]->id, 102 @{$_[0]->{_objects}} > 1 ? '(' . 103 scalar(@{$_[0]->{_objects}}) . ' obj.)' : $_[0]->{_objects}[0]->id, 100 104 ); 101 105 }, … … 122 126 if (!$_[2]) { 123 127 return $_[0]->base->list_canonical_fields($_[0]->{_otype}, 'r') 128 } 129 }, 130 }); 131 $objenv->add_func('print', { 132 help => 'print fmt - show attributes using template', 133 code => sub { 134 my ($env, $fmt) = @_; 135 foreach (@{$env->{_objects}}) { 136 print $OUT $_->queryformat($fmt) . "\n"; 124 137 } 125 138 }, … … 184 197 /^contratType$/ and return 185 198 $env->base->search_objects('group', 'sutype=contrattype'); 199 /^site$/ and return 200 $env->base->search_objects('site'); 186 201 if (@{$env->{_objects}} == 1) { 187 202 return $env->{_objects}[0]->get_attributes($args[0]); … … 242 257 }, 243 258 }); 259 $objenv->add_func('delete', { 260 help => 'delete - delete selected object', 261 code => sub { 262 my ($env) = @_; 263 printf $OUT "%s: %s\ndelete selected objects ? (yes/NO) ", 264 $env->{_otype}, join(', ', map { $_->id } @{$env->{_objects}}); 265 my $reply = <STDIN> || ''; chomp($reply); 266 if ($reply eq 'yes') { 267 foreach (@{$env->{_objects}}) { 268 $env->base->delete_object($env->{_otype}, $_->id) or do { 269 print $OUT "Cannot delete " . $_->id; 270 return; 271 }; 272 } 273 $env->base->commit; 274 return "EXIT"; 275 } else { 276 print $OUT "cancel !" 277 } 278 }, 279 }); 244 280 245 281 if (lc($otype) eq 'user') { … … 324 360 $env->add_func('exit', { help => "exit current mode", 325 361 code => sub { return "EXIT" }, }); 362 $env->add_func('help', { 363 help => 'help [command] - print help about command', 364 completion => sub { 365 if (!$_[2]) { return sort keys %{ $_[0]->{funcs} || {}} } 366 }, 367 code => sub { 368 my ($self, $name) = @_; 369 if (!$name) { 370 print $OUT join(', ', sort keys %{ $self->{funcs} || {}}); 371 } elsif ($self->{funcs}{$name}{alias}) { 372 print $OUT "$name is an alias for " . join(' ', 373 @{$self->{funcs}{$name}{alias}}); 374 } elsif ($self->{funcs}{$name}{help}) { 375 print $OUT $self->{funcs}{$name}{help}; 376 } else { 377 print $OUT "No help availlable"; 378 } 379 }, 380 }); 381 326 382 $env; 327 383 } … … 370 426 if (!$name) { 371 427 return grep { /^\Q$lastw\E/ } sort 372 ('help', keys %{ $self->{funcs} || {}}); 373 } elsif ($name eq 'help') { 374 return grep { /^\Q$lastw\E/ } sort keys %{ $self->{funcs} || {}}; 428 (keys %{ $self->{funcs} || {}}); 375 429 } elsif ($self->{funcs}{$name}{alias}) { 376 430 $self->complete($lastw, @{$self->{funcs}{$name}{alias}}, @args); … … 386 440 my ($self, $name, @args) = @_; 387 441 return if (!$name); 388 if ($name eq 'help') { 389 $self->help(@args); 390 } elsif ($self->{funcs}{$name}{alias}) { 442 if ($self->{funcs}{$name}{alias}) { 391 443 $self->run(@{$self->{funcs}{$name}{alias}}, @args); 392 444 } elsif ($self->{funcs}{$name}{code}) { … … 396 448 } 397 449 398 sub help {399 my ($self, $name) = @_;400 if (!$name) {401 print $OUT join(', ', sort keys %{ $self->{funcs} || {}});402 } elsif ($self->{funcs}{$name}{alias}) {403 print $OUT "$name is an alias for " . join(' ',404 @{$self->{funcs}{$name}{alias}});405 } elsif ($self->{funcs}{$name}{help}) {406 print $OUT $self->{funcs}{$name}{help};407 } else {408 print $OUT "No help availlable";409 }410 }411 412 413 450 1;
Note: See TracChangeset
for help on using the changeset viewer.