Changeset 2446 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Cli/Object.pm
- Timestamp:
- 10/13/20 13:42:23 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Cli/Object.pm
r2422 r2446 377 377 $env->{_objects}[0]->get_attributes($args[0]); 378 378 } 379 } 380 }, 381 }); 382 $self->add_func('sed', { 383 help => 'Apply regular expression on curent attribute', 384 code => sub { 385 my ($env, $attr, $reg) = @_; 386 $reg or do { 387 $self->print( "attribute and value must be specified\n" ); 388 return; 389 }; 390 foreach (@{$env->{_objects}}) { 391 my @newvalues; 392 my $Change = 0; 393 foreach my $val ($_->get_attributes($attr)) { 394 my $nval = $val; 395 eval "\$nval =~ $reg;"; 396 if ($@) { 397 $self->print("$@No change done\n"); 398 $env->rollback; 399 return; 400 } 401 if ($val ne $nval) { 402 $self->printf("%s: %s => %s\n", $_->id, $val, $nval); 403 $Change ++; 404 } 405 push(@newvalues, $nval) if($nval); 406 } 407 if ( $Change ) { 408 defined $_->set_c_fields($attr => @newvalues <= 1 ? $newvalues[0] : \@newvalues) or do { 409 $_->base->rollback; 410 $self->printf ("Cannot set $attr to %s for %s\n", join(', ', @newvalues), $_->id); 411 return; 412 }; 413 } else { 414 $self->printf("No change for %s\n", $_->id); 415 } 416 } 417 $env->commit; 418 $self->print( "Done.\n" ); 419 }, 420 completion => sub { 421 my ($env, $lastw, @args) = @_; 422 if (!$args[0]) { 423 return $env->base->list_canonical_fields($env->{_otype}, 'w') 379 424 } 380 425 },
Note: See TracChangeset
for help on using the changeset viewer.