mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-17 09:29:30 +01:00
Interpreter: allow processing of empty result
This fixes .e.g.: <pragma-> !echo foo &{echo bar | { sed s/bar// }} baz such that it produces the output "foo baz" instead of no output at all.
This commit is contained in:
parent
f680439d47
commit
af2d9844b8
@ -224,6 +224,7 @@ sub interpreter($self, $context) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
# return no output since it will be handled by process manager
|
# return no output since it will be handled by process manager
|
||||||
|
$context->{'skip-handle-result'} = 1;
|
||||||
return '';
|
return '';
|
||||||
} else {
|
} else {
|
||||||
# execute this command normally
|
# execute this command normally
|
||||||
|
@ -79,9 +79,9 @@ sub execute($self, $context) {
|
|||||||
# launch the `vm-client` applet
|
# launch the `vm-client` applet
|
||||||
$self->{pbot}->{applets}->execute_applet($context);
|
$self->{pbot}->{applets}->execute_applet($context);
|
||||||
|
|
||||||
# return empty string since the applet process reader will
|
# return undef since the applet process reader will
|
||||||
# pass the output along to the result handler
|
# pass the output along to the result handler
|
||||||
return '';
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -453,8 +453,7 @@ sub handle_action($self, $context, $action) {
|
|||||||
my ($lang, $code) = ($1, $2);
|
my ($lang, $code) = ($1, $2);
|
||||||
$context->{lang} = $lang;
|
$context->{lang} = $lang;
|
||||||
$context->{code} = $code;
|
$context->{code} = $code;
|
||||||
$self->{pbot}->{factoids}->{code}->execute($context);
|
return $self->{pbot}->{factoids}->{code}->execute($context);
|
||||||
return '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $action if $context->{special} eq 'code-factoid';
|
return $action if $context->{special} eq 'code-factoid';
|
||||||
|
@ -230,7 +230,6 @@ sub process_line($self, $from, $nick, $user, $host, $text, $tags = '', $is_comma
|
|||||||
|
|
||||||
# interpret all parsed commands
|
# interpret all parsed commands
|
||||||
foreach $command (@commands) {
|
foreach $command (@commands) {
|
||||||
|
|
||||||
# check if user is ignored
|
# check if user is ignored
|
||||||
# the `login` command gets a pass on the ignore filter
|
# the `login` command gets a pass on the ignore filter
|
||||||
if ($command !~ /^login / and $self->{pbot}->{ignorelist}->is_ignored($from, "$nick!$user\@$host")) {
|
if ($command !~ /^login / and $self->{pbot}->{ignorelist}->is_ignored($from, "$nick!$user\@$host")) {
|
||||||
@ -578,9 +577,6 @@ sub interpret($self, $context) {
|
|||||||
# sends final command output to appropriate queues.
|
# sends final command output to appropriate queues.
|
||||||
# use context result if no result argument given.
|
# use context result if no result argument given.
|
||||||
sub handle_result($self, $context, $result = $context->{result}) {
|
sub handle_result($self, $context, $result = $context->{result}) {
|
||||||
# ensure we have a command result to work with
|
|
||||||
return if not defined $result or not length $result;
|
|
||||||
|
|
||||||
# preservation of consecutive whitespace is disabled by default
|
# preservation of consecutive whitespace is disabled by default
|
||||||
$context->{preserve_whitespace} //= 0;
|
$context->{preserve_whitespace} //= 0;
|
||||||
|
|
||||||
@ -591,7 +587,13 @@ sub handle_result($self, $context, $result = $context->{result}) {
|
|||||||
$Data::Dumper::Indent = 2;
|
$Data::Dumper::Indent = 2;
|
||||||
$self->{pbot}->{logger}->log("Interpreter::handle_result [$result]\n");
|
$self->{pbot}->{logger}->log("Interpreter::handle_result [$result]\n");
|
||||||
$self->{pbot}->{logger}->log(Dumper $context);
|
$self->{pbot}->{logger}->log(Dumper $context);
|
||||||
$Data::Dumper::Sortkeys = 1;
|
}
|
||||||
|
|
||||||
|
# ensure we have a command result to work with
|
||||||
|
if (!defined $result || $context->{'skip-handle-result'}) {
|
||||||
|
$self->{pbot}->{logger}->log("Skipping handle_result\n");
|
||||||
|
delete $context->{'skip-handle-result'};
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# strip and store /command prefixes
|
# strip and store /command prefixes
|
||||||
|
@ -135,8 +135,8 @@ sub execute_process($self, $context, $subref, $timeout = undef, $reader_subref =
|
|||||||
$self->{pbot}->{select_handler}->add_reader($reader, sub { $self->process_pipe_reader($context->{pid}, @_) });
|
$self->{pbot}->{select_handler}->add_reader($reader, sub { $self->process_pipe_reader($context->{pid}, @_) });
|
||||||
}
|
}
|
||||||
|
|
||||||
# return empty string since reader will handle the output when child is finished
|
# return undef since reader will handle the output when child is finished
|
||||||
return '';
|
return undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ use PBot::Imports;
|
|||||||
# These are set by the /misc/update_version script
|
# These are set by the /misc/update_version script
|
||||||
use constant {
|
use constant {
|
||||||
BUILD_NAME => "PBot",
|
BUILD_NAME => "PBot",
|
||||||
BUILD_REVISION => 4820,
|
BUILD_REVISION => 4821,
|
||||||
BUILD_DATE => "2024-10-31",
|
BUILD_DATE => "2024-11-02",
|
||||||
};
|
};
|
||||||
|
|
||||||
sub initialize {}
|
sub initialize {}
|
||||||
|
Loading…
Reference in New Issue
Block a user