X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=script%2Fpublic-inbox-watch;h=b6c6b2022bb7ae64e6aae5e4cccaa73b68866e59;hb=03c9119ec613fa43dcf0a50b5f35754f13228bc8;hp=20534bf2a3ec196e36cdd3c9d2bb0c6136fba849;hpb=62068fafcb40c2f91d31cf3fa5e775ecc52a6ba8;p=public-inbox.git diff --git a/script/public-inbox-watch b/script/public-inbox-watch index 20534bf2..b6c6b202 100755 --- a/script/public-inbox-watch +++ b/script/public-inbox-watch @@ -3,7 +3,7 @@ # License: AGPL-3.0+ use strict; use IO::Handle; -use PublicInbox::WatchMaildir; +use PublicInbox::Watch; use PublicInbox::Config; use PublicInbox::DS; use PublicInbox::Sigfd; @@ -11,18 +11,30 @@ use PublicInbox::Syscall qw($SFD_NONBLOCK); my $oldset = PublicInbox::Sigfd::block_signals(); STDOUT->autoflush(1); STDERR->autoflush(1); -my ($config, $watch_md); +local $0 = $0; # local since this script may be eval-ed +my $watch = PublicInbox::Watch->new(PublicInbox::Config->new); my $reload = sub { - $config = PublicInbox::Config->new; - $watch_md->quit if $watch_md; - $watch_md = PublicInbox::WatchMaildir->new($config); + my $prev = $watch or return; # SIGQUIT issued + $watch->quit; + $watch = PublicInbox::Watch->new(PublicInbox::Config->new); + if ($watch) { + warn("I: reloaded\n"); + } else { + warn("E: reloading failed\n"); + $watch = $prev; + } }; -$reload->(); -if ($watch_md) { - my $scan = sub { $watch_md->trigger_scan('full') if $watch_md }; + +if ($watch) { + my $scan = sub { + return if !$watch; + warn "I: scanning\n"; + $watch->trigger_scan('full'); + }; my $quit = sub { - $watch_md->quit if $watch_md; - $watch_md = undef; + $watch->quit if $watch; + $watch = undef; + $0 .= ' quitting'; }; my $sig = { HUP => $reload, @@ -41,5 +53,5 @@ if ($watch_md) { PublicInbox::Sigfd::set_sigmask($oldset); PublicInbox::DS->SetLoopTimeout(1000); } - $watch_md->watch($sig, $oldset) while ($watch_md); + $watch->watch($sig, $oldset) while ($watch); }