Commands: add(): improve named-parameter validation

This commit is contained in:
Pragmatic Software 2021-07-31 12:04:50 -07:00
parent 5aeb608052
commit 17e78cd7fc
2 changed files with 23 additions and 11 deletions

View File

@ -39,18 +39,30 @@ sub load_commands {
sub add {
my ($self, %args) = @_;
$self->register(
delete $args{subref},
delete $args{name},
delete $args{requires_cap},
delete $args{help},
);
# expected parameters
my @valid = qw(subref name requires_cap help);
# die if any unhandled arguments were passed
# check for unexpected parameters
my @invalid;
foreach my $key (keys %args) {
$self->{pbot}->{logger}->log("Commands: error: extra arguments provided to add(): $key\n");
die;
if (not grep { $_ eq $key } @valid) {
push @invalid, $key;
}
}
# die if any unexpected parameters were passed
if (@invalid) {
$self->{pbot}->{logger}->log("Commands: error: invalid arguments provided to add(): @invalid\n");
die "Commands: error: invalid arguments provided to add(): @invalid";
}
# register command
$self->register(
$args{subref},
$args{name},
$args{requires_cap},
$args{help},
);
}
# alias to unregister() for consistency

View File

@ -25,8 +25,8 @@ use PBot::Imports;
# These are set by the /misc/update_version script
use constant {
BUILD_NAME => "PBot",
BUILD_REVISION => 4329,
BUILD_DATE => "2021-07-30",
BUILD_REVISION => 4331,
BUILD_DATE => "2021-07-31",
};
sub initialize {}