diff options
| author | lasers | 2015-01-16 19:38:47 -0600 | 
|---|---|---|
| committer | lasers | 2015-01-16 19:38:47 -0600 | 
| commit | b78ddc2d218d7baed45b1f5485b38a9090ed4135 (patch) | |
| tree | be893161f07e03b311d349a5a0bc5cd89568c628 /scripts/scriptsave.pl | |
| parent | 9115699f7227fcefbaf8f8b4eb4d4eaafe0ede16 (diff) | |
| download | scripts.irssi.org-b78ddc2d218d7baed45b1f5485b38a9090ed4135.tar.bz2 | |
Fixed scriptsave.pl
Diffstat (limited to 'scripts/scriptsave.pl')
| -rw-r--r-- | scripts/scriptsave.pl | 75 | 
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'); | 
