mirror of
https://github.com/pragma-/pbot.git
synced 2025-01-10 20:12:35 +01:00
Core: Use EXIT_SUCCESS/EXIT_FAILURE; misc clean-ups
This commit is contained in:
parent
9f46cf0ebc
commit
74380f2a72
BIN
data/factoids.sqlite3
vendored
BIN
data/factoids.sqlite3
vendored
Binary file not shown.
@ -58,15 +58,18 @@ use PBot::Core::Users;
|
||||
use PBot::Core::Utils::ParseDate;
|
||||
use PBot::Core::WebPaste;
|
||||
|
||||
use POSIX qw/EXIT_FAILURE EXIT_SUCCESS/;
|
||||
use Encode;
|
||||
use File::Basename;
|
||||
|
||||
# set standard output streams to encode as utf8
|
||||
binmode(STDOUT, ":utf8");
|
||||
binmode(STDERR, ":utf8");
|
||||
BEGIN {
|
||||
# set standard output streams to encode as utf8
|
||||
binmode(STDOUT, ":utf8");
|
||||
binmode(STDERR, ":utf8");
|
||||
|
||||
# decode command-line arguments from utf8
|
||||
@ARGV = map { decode('UTF-8', $_, 1) } @ARGV;
|
||||
# decode command-line arguments from utf8
|
||||
@ARGV = map { decode('UTF-8', $_, 1) } @ARGV;
|
||||
}
|
||||
|
||||
sub new {
|
||||
my ($class, %args) = @_;
|
||||
@ -96,14 +99,14 @@ sub initialize {
|
||||
|
||||
if (not defined $item or not defined $value) {
|
||||
print STDERR "Fatal error: unknown argument `$arg`; arguments must be in the form of `section.key=value` or `path_dir=value` (e.g.: irc.botnick=newnick or data_dir=path)\n";
|
||||
exit;
|
||||
exit EXIT_FAILURE;
|
||||
}
|
||||
|
||||
my ($section, $key) = split /\./, $item, 2;
|
||||
|
||||
if (not defined $section or not defined $key) {
|
||||
print STDERR "Fatal error: bad argument `$arg`; registry entries must be in the form of section.key (e.g.: irc.botnick)\n";
|
||||
exit;
|
||||
exit EXIT_FAILURE;
|
||||
}
|
||||
|
||||
$section =~ s/^-//; # remove a leading - to allow arguments like -irc.botnick due to habitual use of -args
|
||||
@ -115,14 +118,14 @@ sub initialize {
|
||||
foreach my $path (qw/data_dir applet_dir update_dir/) {
|
||||
if (not -d $conf{$path}) {
|
||||
print STDERR "$path path ($conf{$path}) does not exist; aborting.\n";
|
||||
exit;
|
||||
exit EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
# insist that data directory be copied
|
||||
if (basename($conf{data_dir}) eq 'data') {
|
||||
print STDERR "Data directory ($conf{data_dir}) cannot be named `data`. This is to ensure the directory is copied from its default location. Please follow doc/QuickStart.md.\n";
|
||||
exit;
|
||||
exit EXIT_FAILURE;
|
||||
}
|
||||
|
||||
# let modules register atexit subroutines
|
||||
@ -151,9 +154,9 @@ sub initialize {
|
||||
|
||||
# update any data files to new locations/formats
|
||||
# --- this must happen before any data files are opened! ---
|
||||
if ($self->{updater}->update) {
|
||||
if ($self->{updater}->update != EXIT_SUCCESS) {
|
||||
$self->{logger}->log("Update failed.\n");
|
||||
exit 0;
|
||||
exit EXIT_FAILURE;
|
||||
}
|
||||
|
||||
# create capabilities so commands can add new capabilities
|
||||
@ -167,8 +170,8 @@ sub initialize {
|
||||
|
||||
# ensure user has attempted to configure the bot
|
||||
if (not length $self->{registry}->get_value('irc', 'botnick')) {
|
||||
$self->{logger}->log("Fatal error: IRC nickname not defined; please set registry key irc.botnick in $conf{data_dir}/registry to continue.\n");
|
||||
exit;
|
||||
$self->{logger}->log("Fatal error: IRC nickname not defined; please set registry key irc.botnick in $conf{data_dir}/registry to continue. See doc/QuickStart.md for more information.\n");
|
||||
exit EXIT_FAILURE;
|
||||
}
|
||||
|
||||
# prepare the IRC engine
|
||||
@ -234,11 +237,8 @@ sub random_nick {
|
||||
# TODO: add disconnect subroutine and connect/disconnect/reconnect commands
|
||||
sub connect {
|
||||
my ($self) = @_;
|
||||
return if $ENV{PBOT_LOCAL};
|
||||
|
||||
if ($self->{connected}) {
|
||||
# TODO: disconnect, clean-up, etc
|
||||
}
|
||||
return if $ENV{PBOT_LOCAL};
|
||||
|
||||
my $server = $self->{registry}->get_value('irc', 'server');
|
||||
my $port = $self->{registry}->get_value('irc', 'port');
|
||||
@ -247,6 +247,11 @@ sub connect {
|
||||
|
||||
$self->{logger}->log("Connecting to $server:$port\n");
|
||||
|
||||
if ($self->{conn}) {
|
||||
$self->{logger}->log("Error: already connected to $server:$port!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (my $attempt = 0; $attempt < $retries; $attempt++) {
|
||||
my %config = (
|
||||
Nick => $self->{registry}->get_value('irc', 'randomize_nick') ? $self->random_nick : $self->{registry}->get_value('irc', 'botnick'),
|
||||
@ -285,7 +290,10 @@ sub connect {
|
||||
sleep $delay;
|
||||
}
|
||||
|
||||
$self->{connected} = 1;
|
||||
if (!$self->{conn}) {
|
||||
$self->{logger}->log("Max retries reached; giving up.\n");
|
||||
$self->exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
# set up IRC handlers
|
||||
$self->{irchandlers}->add_handlers;
|
||||
@ -302,7 +310,7 @@ sub register_signal_handlers {
|
||||
print $msg;
|
||||
}
|
||||
$self->atexit;
|
||||
exit 0;
|
||||
exit EXIT_SUCCESS;
|
||||
};
|
||||
}
|
||||
|
||||
@ -320,7 +328,7 @@ sub atexit {
|
||||
# convenient function to exit PBot
|
||||
sub exit {
|
||||
my ($self, $exitval) = @_;
|
||||
$exitval //= 0;
|
||||
$exitval //= EXIT_SUCCESS;
|
||||
|
||||
my $msg = "Exiting immediately.\n";
|
||||
|
||||
|
@ -10,6 +10,7 @@ package PBot::Core::Handlers::SASL;
|
||||
use PBot::Imports;
|
||||
use parent 'PBot::Core::Class';
|
||||
|
||||
use POSIX qw/EXIT_SUCCESS EXIT_FAILURE/;
|
||||
use Encode;
|
||||
use MIME::Base64;
|
||||
|
||||
@ -36,7 +37,7 @@ sub on_sasl_authenticate {
|
||||
|
||||
if (not defined $password or not length $password) {
|
||||
$self->{pbot}->{logger}->log("Error: Registry entry irc.identify_password is not set.\n");
|
||||
$self->{pbot}->exit;
|
||||
$self->{pbot}->exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
$password = encode('UTF-8', "$nick\0$nick\0$password");
|
||||
@ -72,7 +73,7 @@ sub on_rpl_loggedout {
|
||||
sub on_err_nicklocked {
|
||||
my ($self, $event_type, $event) = @_;
|
||||
$self->{pbot}->{logger}->log($event->{event}->{args}->[1] . "\n");
|
||||
$self->{pbot}->exit;
|
||||
$self->{pbot}->exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sub on_rpl_saslsuccess {
|
||||
@ -85,19 +86,19 @@ sub on_rpl_saslsuccess {
|
||||
sub on_err_saslfail {
|
||||
my ($self, $event_type, $event) = @_;
|
||||
$self->{pbot}->{logger}->log($event->{event}->{args}->[1] . "\n");
|
||||
$self->{pbot}->exit;
|
||||
$self->{pbot}->exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sub on_err_sasltoolong {
|
||||
my ($self, $event_type, $event) = @_;
|
||||
$self->{pbot}->{logger}->log($event->{event}->{args}->[1] . "\n");
|
||||
$self->{pbot}->exit;
|
||||
$self->{pbot}->exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sub on_err_saslaborted {
|
||||
my ($self, $event_type, $event) = @_;
|
||||
$self->{pbot}->{logger}->log($event->{event}->{args}->[1] . "\n");
|
||||
$self->{pbot}->exit;
|
||||
$self->{pbot}->exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sub on_err_saslalready {
|
||||
@ -110,7 +111,7 @@ sub on_rpl_saslmechs {
|
||||
my ($self, $event_type, $event) = @_;
|
||||
$self->{pbot}->{logger}->log("SASL mechanism not available.\n");
|
||||
$self->{pbot}->{logger}->log("Available mechanisms are: $event->{event}->{args}->[1]\n");
|
||||
$self->{pbot}->exit;
|
||||
$self->{pbot}->exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
1;
|
||||
|
@ -58,7 +58,7 @@ sub on_disconnect {
|
||||
my ($self, $event_type, $event) = @_;
|
||||
|
||||
$self->{pbot}->{logger}->log("Disconnected...\n");
|
||||
$self->{pbot}->{connected} = 0;
|
||||
$self->{pbot}->{conn} = undef;
|
||||
|
||||
# send pbot.disconnect to notify PBot internals
|
||||
$self->{pbot}->{event_dispatcher}->dispatch_event(
|
||||
|
@ -99,7 +99,7 @@ sub trigger_irc_debug {
|
||||
|
||||
$self->{pbot}->{irc}->debug($newvalue);
|
||||
|
||||
if ($self->{pbot}->{connected}) {
|
||||
if ($self->{pbot}->{conn}) {
|
||||
$self->{pbot}->{conn}->debug($newvalue);
|
||||
}
|
||||
}
|
||||
@ -107,7 +107,7 @@ sub trigger_irc_debug {
|
||||
sub trigger_change_botnick {
|
||||
my ($self, $section, $item, $newvalue) = @_;
|
||||
|
||||
if ($self->{pbot}->{connected}) {
|
||||
if ($self->{pbot}->{conn}) {
|
||||
$self->{pbot}->{conn}->nick($newvalue)
|
||||
}
|
||||
}
|
||||
|
@ -25,8 +25,8 @@ use PBot::Imports;
|
||||
# These are set by the /misc/update_version script
|
||||
use constant {
|
||||
BUILD_NAME => "PBot",
|
||||
BUILD_REVISION => 4557,
|
||||
BUILD_DATE => "2022-07-09",
|
||||
BUILD_REVISION => 4558,
|
||||
BUILD_DATE => "2022-07-10",
|
||||
};
|
||||
|
||||
sub initialize {}
|
||||
|
Loading…
Reference in New Issue
Block a user