Initial checkin
This commit is contained in:
parent
dd0bc68216
commit
e43aa3ba0f
80
autosave.pl
Normal file
80
autosave.pl
Normal file
@ -0,0 +1,80 @@
|
||||
#
|
||||
# autosave.pl
|
||||
# Automatically performs a '/layout save' followed by a
|
||||
# '/save' at a configurable interval
|
||||
#
|
||||
#
|
||||
# Settings:
|
||||
# /SET autosave_interval <minutes> (0 to disable, 60 by default)
|
||||
#
|
||||
# Commands:
|
||||
# /AUTOSAVE Execute save commands
|
||||
#
|
||||
|
||||
use strict;
|
||||
use Irssi;
|
||||
|
||||
use vars qw($VERSION %IRSSI);
|
||||
|
||||
$VERSION = '1.0.0';
|
||||
%IRSSI = (
|
||||
authors => 'John R. Dennison',
|
||||
contact => 'jrd@gerdesas.com',
|
||||
name => 'AutoSave',
|
||||
description => 'Save configuration on set intervals. Based on autoclearinput.pl by Trevor "tee" Slocum',
|
||||
license => 'GPL V2+',
|
||||
url => 'https://git.gerdesas.com/jrd/irssi-autosave',
|
||||
changed => '2023-07-03'
|
||||
);
|
||||
|
||||
my ($autosave_timer, $server);
|
||||
|
||||
# set up timer
|
||||
sub autosave_init_timer {
|
||||
if (Irssi::settings_get_int("autosave_interval") <= 0) {
|
||||
Irssi::print ($IRSSI{name} . ": Timer unset.");
|
||||
return;
|
||||
}
|
||||
$autosave_timer = Irssi::timeout_add_once(Irssi::settings_get_int("autosave_interval") * 1000 * 60, "autosave_execute", "");
|
||||
Irssi::print ($IRSSI{name} . ": Timer set for %9" . Irssi::settings_get_int("autosave_interval") . "%9 minutes.");
|
||||
}
|
||||
|
||||
# save layout and general configuaration
|
||||
sub autosave_execute {
|
||||
$server -> command ("LAYOUT SAVE");
|
||||
$server -> command ("SAVE");
|
||||
# remove the timer if it already exists
|
||||
if (defined($autosave_timer)) {
|
||||
Irssi::timeout_remove($autosave_timer);
|
||||
}
|
||||
if (Irssi::settings_get_int("autosave_interval") > 0) {
|
||||
Irssi::print ($IRSSI{name} . ": Configuration saved. Resetting time for %9" . Irssi::settings_get_int("autosave_interval") . "%9 minutes.");
|
||||
$autosave_timer = Irssi::timeout_add_once(Irssi::settings_get_int("autosave_interval") * 1000 * 60, "autosave_execute", "");
|
||||
}
|
||||
}
|
||||
|
||||
# config has changed; reset timer if it exists
|
||||
sub autosave_reread_config {
|
||||
Irssi::print ($IRSSI{name} . ": Configuration has changed - resetting timer");
|
||||
if (defined($autosave_timer)) {
|
||||
Irssi::timeout_remove($autosave_timer);
|
||||
}
|
||||
autosave_init_timer
|
||||
}
|
||||
|
||||
Irssi::settings_add_int("autosave", "autosave_interval", 60);
|
||||
Irssi::signal_add('setup changed' => 'autosave_reread_config');
|
||||
Irssi::command_bind("autosave", "autosave_execute");
|
||||
|
||||
print $IRSSI{name} . ': version %9' . $VERSION . '%9 ready. Save commands ' .
|
||||
(Irssi::settings_get_int("autosave_interval") > 0
|
||||
? ('will be executed every %9' . Irssi::settings_get_int("autosave_interval") . '%9 minutes.')
|
||||
: 'are currently %9disabled%9.');
|
||||
print $IRSSI{name} . ': Configure this delay with: /SET autosave_interval <minutes> [0 to disable]';
|
||||
print $IRSSI{name} . ': Manually save with /AUTOSAVE';
|
||||
|
||||
# snag server context for the current active server
|
||||
$server = Irssi::servers();
|
||||
|
||||
# initialize timer and call it a day
|
||||
autosave_init_timer
|
Loading…
x
Reference in New Issue
Block a user