summaryrefslogtreecommitdiffstats
path: root/scripts/scriptsave.pl
diff options
context:
space:
mode:
authorlasers2015-01-16 19:38:47 -0600
committerlasers2015-01-16 19:38:47 -0600
commitb78ddc2d218d7baed45b1f5485b38a9090ed4135 (patch)
treebe893161f07e03b311d349a5a0bc5cd89568c628 /scripts/scriptsave.pl
parent9115699f7227fcefbaf8f8b4eb4d4eaafe0ede16 (diff)
downloadscripts.irssi.org-b78ddc2d218d7baed45b1f5485b38a9090ed4135.tar.bz2
Fixed scriptsave.pl
Diffstat (limited to 'scripts/scriptsave.pl')
-rw-r--r--scripts/scriptsave.pl75
1 files changed, 75 insertions, 0 deletions
diff --git a/scripts/scriptsave.pl b/scripts/scriptsave.pl
new file mode 100644
index 0000000..5a561e2
--- /dev/null
+++ b/scripts/scriptsave.pl
@@ -0,0 +1,75 @@
+use strict;
+use warnings;
+use Irssi;
+use File::Basename;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = '0.2';
+%IRSSI = (
+ authors => 'lasers',
+ contact => 'lasers on freenode',
+ name => 'scriptsave',
+ description => 'Loads scripts from file instead of autorun directory',
+ license => 'WTFPL',
+);
+
+# ──── USAGE ────
+# Outside irssi:
+# Remove ~/.irssi/scripts/autorun
+# Add "script load scriptsave" to ~/.irssi/startup
+#
+# Inside irssi:
+# /help script
+# /script save
+#
+# ──── NOTE ────
+# Scripts will be saved to ~/.irssi/config.scriptsave
+#
+# ──── LIMITATION #1 ────
+# This script will not work with scripts with a dash
+# in their filenames. Remember to omit them or replace
+# them with an underscore when adding new scripts.
+# ✖ Script-name.pl
+# ✔ Script_name.pl
+# ✔ Scriptname.pl
+#
+# ──── LIMITATION #2 ────
+# This script will not work with /script exec -permanent
+
+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) && ($_ !~ m/data+(\d)/)){
+ 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');