From 352be7fae2680c6ed8f9ecf98d8aa2eb55ead14e Mon Sep 17 00:00:00 2001 From: lasers Date: Wed, 8 Oct 2014 13:14:18 -0500 Subject: [PATCH 1/2] Added scriptsave.pl --- scripts/scriptsave.pl | 63 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 scripts/scriptsave.pl diff --git a/scripts/scriptsave.pl b/scripts/scriptsave.pl new file mode 100644 index 00000000..ea8fc34b --- /dev/null +++ b/scripts/scriptsave.pl @@ -0,0 +1,63 @@ +use strict; +use warnings; +use Irssi; +use File::Basename; +use vars qw($VERSION %IRSSI); + +$VERSION = '0.03'; +%IRSSI = ( + authors => 'lasers', + contact => 'lasers on freenode', + name => 'scriptsave', + description => 'Loads scripts from file instead of autorun directory', + license => 'Public Domain', +); + +# ──── USAGE: ───── +# Outside irssi: +# Remove ~/.irssi/scripts/autorun +# Add "script load scriptsave" to ~/.irssi/startup +# +# Inside irssi: +# /script save +# +# ──── NOTE: ──── +# Scripts will be saved to ~/.irssi/config.scriptsave + +my $name = basename(__FILE__); +$name =~ s/\.[^.]+$//; +my $lst = Irssi::get_irssi_dir()."/config.scriptsave"; + +sub cmd_load_scripts(){ + if (open(my $f, '<:encoding(UTF-8)', $lst)){ + while (my $line = <$f>) { + chomp $line; + if ($line ne $name){ + Irssi::command('script load '.$line); + } + } + } +} + +sub cmd_save_scripts { + unlink $lst; + foreach (sort grep(s/::$//, keys %Irssi::Script::)){ + open(my $fh, ">>", $lst); + if ($_ ne $name){ + print $fh "$_\n"; + } + close $fh; + } + Irssi::print ("Scripts saved to $lst"); +} + +sub cmd_print_help() { + my ($args) = @_; + if ($args =~ /^script( load)? *$/i){ + my $help = "\n/SCRIPT SAVE saves the list of currently loaded scripts to the file."; + Irssi::print($help, MSGLEVEL_CLIENTCRAP); + } +} +cmd_load_scripts; +Irssi::command_bind('script save', 'cmd_save_scripts'); +Irssi::command_bind_last('help', 'cmd_print_help'); From 5112f305701ed627e8055360b5de2f0ac3a45a4f Mon Sep 17 00:00:00 2001 From: lasers Date: Sun, 19 Oct 2014 08:11:13 -0500 Subject: [PATCH 2/2] Added limitation note + excluded permanent data script --- scripts/scriptsave.pl | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/scripts/scriptsave.pl b/scripts/scriptsave.pl index ea8fc34b..e6f83c2a 100644 --- a/scripts/scriptsave.pl +++ b/scripts/scriptsave.pl @@ -4,7 +4,7 @@ use Irssi; use File::Basename; use vars qw($VERSION %IRSSI); -$VERSION = '0.03'; +$VERSION = '0.05'; %IRSSI = ( authors => 'lasers', contact => 'lasers on freenode', @@ -13,16 +13,25 @@ $VERSION = '0.03'; license => 'Public Domain', ); -# ──── USAGE: ───── +# ──── USAGE ──── # Outside irssi: -# Remove ~/.irssi/scripts/autorun -# Add "script load scriptsave" to ~/.irssi/startup +# Remove ~/.irssi/scripts/autorun +# Add "script load scriptsave" to ~/.irssi/startup # # Inside irssi: -# /script save +# /help script +# /script save # -# ──── NOTE: ──── +# ──── NOTE ──── # Scripts will be saved to ~/.irssi/config.scriptsave +# +# ──── LIMITATIONS ──── +# This script will not work for scripts with a dash +# in their filenames. If possible, omit them or replace +# them with an underscore. +# ✖ Script-name.pl +# ✔ Script_name.pl +# ✔ Scriptname.pl my $name = basename(__FILE__); $name =~ s/\.[^.]+$//; @@ -43,7 +52,7 @@ sub cmd_save_scripts { unlink $lst; foreach (sort grep(s/::$//, keys %Irssi::Script::)){ open(my $fh, ">>", $lst); - if ($_ ne $name){ + if (($_ ne $name) && ($_ !~ m/data+(\d)/)){ print $fh "$_\n"; } close $fh; @@ -60,4 +69,4 @@ sub cmd_print_help() { } cmd_load_scripts; Irssi::command_bind('script save', 'cmd_save_scripts'); -Irssi::command_bind_last('help', 'cmd_print_help'); +Irssi::command_bind_last('help', 'cmd_print_help'); \ No newline at end of file