diff options
Diffstat (limited to 'history-search/frog_reload.pl')
-rw-r--r-- | history-search/frog_reload.pl | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/history-search/frog_reload.pl b/history-search/frog_reload.pl deleted file mode 100644 index 678c87d..0000000 --- a/history-search/frog_reload.pl +++ /dev/null @@ -1,99 +0,0 @@ -use strict; -use warnings; - -use Irssi; -use File::ChangeNotify(); -use File::Spec (); -use File::Basename qw(basename); - -#my $THIS_SCRIPT = basename __FILE__; - -my $irssi_dir = Irssi::get_irssi_dir(); -my @watch_dirs = ($irssi_dir, $irssi_dir . '/scripts', - $irssi_dir . '/scripts/autorun'); - -my $watcher = File::ChangeNotify->instantiate_watcher - ( - directories => \@watch_dirs, - filter => qr/\.(?:pl|py)$/, - ); - -my @watchers = File::ChangeNotify->usable_classes(); -print "Started reloader watching: ", join(", ", @watch_dirs), " using $watchers[0]"; - -my %action_for = ( - create => sub { - my ($path) = @_; - Irssi::print ("CREATE: Loading $path"); - load_script($path); - }, - - modify => sub { - my ($path) = @_; - Irssi::print ("MODIFY: reloading $path"); - reload($path); - }, - - delete => sub { - my ($path) = @_; - Irssi::print ("DELETE: Unloading $path"); - unload_script($path); - }, -); - -#TODO: change me back. -Irssi::timeout_add(3000, \&timer_sub, undef); - -sub timer_sub { - print "Timer sub called"; - my @new_events = $watcher->new_events; - for my $event (@new_events) { - - print "Handling event: ", $event->type, " path: ", $event->path; - - if (my $callback = $action_for{$event->type}) { - $callback->($event->path); - } - } -} - -sub reload { - my ($path) = @_; - - unload_script($path); - load_script($path); -} - -sub unload_script { - my ($script_path) = @_; - my $name = filepath_to_script($script_path); - - if (script_is_loaded($name)) { - Irssi::print ("unloading $name..."); - Irssi::command("script unload $name"); - } -} - -sub load_script { - my ($script_path) = @_; - Irssi::command("script load \"$script_path\""); -} - -sub filepath_to_script { - my ($path) = @_; - - my $name = basename $path; - $name =~ s/\.pl$//i; - - return $name; -} - -sub script_is_loaded { - my $name = shift; - print "Checking if $name is loaded"; - no strict 'refs'; - my $retval = defined %{ "Irssi::Script::${name}::" }; - use strict 'refs'; - - return $retval; -} |