Shell-like '-c' for non-interactive commands
This commit is contained in:
parent
add3100401
commit
b22f281938
1 changed files with 27 additions and 2 deletions
29
revbank
29
revbank
|
@ -19,6 +19,20 @@ our %HELP = (
|
||||||
"abort" => "Abort the current transaction",
|
"abort" => "Abort the current transaction",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
my @words;
|
||||||
|
my $one_off = 0;
|
||||||
|
|
||||||
|
if (@ARGV) {
|
||||||
|
# Non-interactive like in sh: -c command_string
|
||||||
|
@ARGV >= 1 and $ARGV[0] eq '-c' or die "$0 has no switches, except -c.";
|
||||||
|
|
||||||
|
$one_off = 1;
|
||||||
|
|
||||||
|
@words = split " ", $ARGV[1];
|
||||||
|
push @words, @ARGV[3 .. $#ARGV] if @ARGV > 3;
|
||||||
|
push @words, "help" if not @words;
|
||||||
|
}
|
||||||
|
|
||||||
$| = 1;
|
$| = 1;
|
||||||
|
|
||||||
my $readline = Term::ReadLine->new($0);
|
my $readline = Term::ReadLine->new($0);
|
||||||
|
@ -79,8 +93,6 @@ RevBank::Plugins->load;
|
||||||
|
|
||||||
call_hooks("startup");
|
call_hooks("startup");
|
||||||
|
|
||||||
my @words;
|
|
||||||
|
|
||||||
OUTER: for (;;) {
|
OUTER: for (;;) {
|
||||||
print "\n" if not @words;
|
print "\n" if not @words;
|
||||||
|
|
||||||
|
@ -103,6 +115,13 @@ OUTER: for (;;) {
|
||||||
|
|
||||||
PROMPT: {
|
PROMPT: {
|
||||||
if (not @words) {
|
if (not @words) {
|
||||||
|
if ($one_off) {
|
||||||
|
exit if $one_off++ > 1;
|
||||||
|
|
||||||
|
abort "Incomplete command." if $cart->size;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
call_hooks "prompt", $cart, $prompt;
|
call_hooks "prompt", $cart, $prompt;
|
||||||
|
|
||||||
my %completions = qw(abort 1);
|
my %completions = qw(abort 1);
|
||||||
|
@ -159,6 +178,8 @@ OUTER: for (;;) {
|
||||||
($method) = @rvargs;
|
($method) = @rvargs;
|
||||||
call_hooks "plugin_fail", $plugin->id, "No method supplied"
|
call_hooks "plugin_fail", $plugin->id, "No method supplied"
|
||||||
if not ref $method;
|
if not ref $method;
|
||||||
|
|
||||||
|
abort "Incomplete command." if $one_off and not @words;
|
||||||
next WORD;
|
next WORD;
|
||||||
}
|
}
|
||||||
if ($rv == ABORT) {
|
if ($rv == ABORT) {
|
||||||
|
@ -197,6 +218,10 @@ revbank - Banking for hackerspace visitors
|
||||||
|
|
||||||
Maybe I'll write some documentation, but not now.
|
Maybe I'll write some documentation, but not now.
|
||||||
|
|
||||||
|
Shell-like invocation with C<-c> is supported, sort of, but it has to be a
|
||||||
|
complete command. Currently, multiple commands are supported on the command
|
||||||
|
line (space separated), but that's an unintended feature...
|
||||||
|
|
||||||
=head1 PLUGINS
|
=head1 PLUGINS
|
||||||
|
|
||||||
Refer to L<RevBank::Plugins> for documentation about writing plugins.
|
Refer to L<RevBank::Plugins> for documentation about writing plugins.
|
||||||
|
|
Loading…
Add table
Reference in a new issue