X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiInput.pm;h=1b28f36f68c57136c90823d0abf0004bab5fc2bc;hb=4f9c44e3fff9c413fc54050dcc633692d33f6968;hp=88889f45cbd1ca964c0a1bc6da45db1125530617;hpb=44917fdd24a8bec1125caa21949476f97d8658d4;p=public-inbox.git diff --git a/lib/PublicInbox/LeiInput.pm b/lib/PublicInbox/LeiInput.pm index 88889f45..1b28f36f 100644 --- a/lib/PublicInbox/LeiInput.pm +++ b/lib/PublicInbox/LeiInput.pm @@ -225,6 +225,7 @@ sub prepare_inputs { # returns undef on error my ($self, $lei, $inputs) = @_; my $in_fmt = $lei->{opt}->{'in-format'}; my $sync = $lei->{opt}->{'mail-sync'} ? {} : undef; # using LeiMailSync + my $may_sync = $sync || $self->{-mail_sync}; if ($lei->{opt}->{stdin}) { @$inputs and return $lei->fail("--stdin and @$inputs do not mix"); @@ -267,12 +268,12 @@ sub prepare_inputs { # returns undef on error } elsif (-d $input_path) { $ifmt eq 'maildir' or return $lei->fail("$ifmt not supported"); - $sync and $input = 'maildir:'. + $may_sync and $input = 'maildir:'. $lei->abs_path($input_path); push @md, $input; } elsif ($self->{missing_ok} && !-e _) { # for "lei rm-watch" on missing Maildir - $sync and $input = 'maildir:'. + $may_sync and $input = 'maildir:'. $lei->abs_path($input_path); } else { return $lei->fail("Unable to handle $input"); @@ -294,7 +295,7 @@ $input is `eml', not --in-format=$in_fmt if ($sync) { $input = $lei->abs_path($mdir) . "/$nc/$bn"; - push @{$sync->{ok}}, $input; + push @{$sync->{ok}}, $input if $sync; } require PublicInbox::MdirReader; } else { @@ -303,15 +304,15 @@ $input is `eml', not --in-format=$in_fmt push @{$sync->{no}}, $input if $sync; push @f, $input; } elsif (-d "$input/new" && -d "$input/cur") { - if ($sync) { + if ($may_sync) { $input = 'maildir:'. $lei->abs_path($input); - push @{$sync->{ok}}, $input; + push @{$sync->{ok}}, $input if $sync; } push @md, $input; } elsif ($self->{missing_ok} && !-e $input) { # for lei rm-watch - $sync and $input = 'maildir:'. + $may_sync and $input = 'maildir:'. $lei->abs_path($input); } else { return $lei->fail("Unable to handle $input") @@ -343,6 +344,13 @@ $input is `eml', not --in-format=$in_fmt require PublicInbox::LeiPmdir; $self->{pmd} = PublicInbox::LeiPmdir->new($lei, $self); } + + # start watching Maildirs ASAP + if ($may_sync && $lei->{sto}) { + grep(!m!\Amaildir:/!i, @md) and die "BUG: @md (no pfx)"; + my $wait = $lei->{sto}->ipc_do('add_sync_folders', @md); + $lei->refresh_watches; + } } $self->{inputs} = $inputs; }