X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=script%2Fpublic-inbox-watch;h=af02d8f358f7b84392744b68df49a4328fc69636;hp=b6c6b2022bb7ae64e6aae5e4cccaa73b68866e59;hb=refs%2Fheads%2Fmaster;hpb=3bfbaacac15a14a379e360dc2d6c5989f49c3769 diff --git a/script/public-inbox-watch b/script/public-inbox-watch index b6c6b202..4c50461f 100755 --- a/script/public-inbox-watch +++ b/script/public-inbox-watch @@ -1,14 +1,23 @@ #!/usr/bin/perl -w -# Copyright (C) 2016-2020 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ +my $help = <autoflush use PublicInbox::Watch; use PublicInbox::Config; use PublicInbox::DS; -use PublicInbox::Sigfd; -use PublicInbox::Syscall qw($SFD_NONBLOCK); -my $oldset = PublicInbox::Sigfd::block_signals(); +my $do_scan = 1; +GetOptions('scan!' => \$do_scan, # undocumented, testing only + 'help|h' => \(my $show_help)) or do { print STDERR $help; exit 1 }; +if ($show_help) { print $help; exit 0 }; +my $oldset = PublicInbox::DS::block_signals(); STDOUT->autoflush(1); STDERR->autoflush(1); local $0 = $0; # local since this script may be eval-ed @@ -18,7 +27,7 @@ my $reload = sub { $watch->quit; $watch = PublicInbox::Watch->new(PublicInbox::Config->new); if ($watch) { - warn("I: reloaded\n"); + warn "# reloaded\n"; } else { warn("E: reloading failed\n"); $watch = $prev; @@ -28,7 +37,7 @@ my $reload = sub { if ($watch) { my $scan = sub { return if !$watch; - warn "I: scanning\n"; + warn "# scanning\n"; $watch->trigger_scan('full'); }; my $quit = sub { @@ -44,14 +53,6 @@ if ($watch) { $sig->{QUIT} = $sig->{TERM} = $sig->{INT} = $quit; # --no-scan is only intended for testing atm, undocumented. - unless (grep(/\A--no-scan\z/, @ARGV)) { - PublicInbox::DS::requeue($scan); - } - my $sigfd = PublicInbox::Sigfd->new($sig, $SFD_NONBLOCK); - local %SIG = (%SIG, %$sig) if !$sigfd; - if (!$sigfd) { - PublicInbox::Sigfd::set_sigmask($oldset); - PublicInbox::DS->SetLoopTimeout(1000); - } + PublicInbox::DS::requeue($scan) if $do_scan; $watch->watch($sig, $oldset) while ($watch); }