]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
Fixed scriptsave.pl
authorlasers <redacted>
Sat, 17 Jan 2015 01:38:47 +0000 (19:38 -0600)
committerlasers <redacted>
Sat, 17 Jan 2015 01:38:47 +0000 (19:38 -0600)
_data/scripts.yaml
scripts/scriptsave.pl [new file with mode: 0644]

index 67fdef53035ead5502869596f1db95ceae017389..f69fadffb6dc8f57c989b39dd31eb81a558525db 100644 (file)
   name: "XQF"
   url: "none"
   version: "0.14"
+
+- authors: "lasers"
+  contact: "lasers on freenode"
+  description: "Loads scripts from file instead of autorun directory"
+  filename: "scriptsave.pl"
+  modified: "2015-01-16 20:00:00"
+  license: "WTFPL"
+  name: "scriptsave"
+  version: "0.2"
+
diff --git a/scripts/scriptsave.pl b/scripts/scriptsave.pl
new file mode 100644 (file)
index 0000000..5a561e2
--- /dev/null
@@ -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');
git clone https://git.99rst.org/PROJECT