[Patch v2 2/4] nmbug: use 'notmuch tag --batch'
From: David Bremner This should be more robust with respect to tags with whitespace and and other special characters. It also (hopefully) fixes a remaining bug handling message-ids with whitespace. It should also be noticeably faster for large sets of changes since it does one exec per change set as opposed to one exec per tag changed. --- devel/nmbug/nmbug | 27 ++- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/devel/nmbug/nmbug b/devel/nmbug/nmbug index befc3d9..73d64fe 100755 --- a/devel/nmbug/nmbug +++ b/devel/nmbug/nmbug @@ -267,6 +267,20 @@ sub do_checkout { do_sync (action => 'checkout'); } +sub quote_for_xapian { + my $str = shift; + $str =~ s/"/""/g; + return '"' . $str . '"'; +} + +sub pair_to_batch_line { + my ($action, $pair) = @_; + + # the tag should already be suitably encoded + + return $action . $ENCPREFIX . $pair->{tag} . +' -- id:' . quote_for_xapian ($pair->{id})."\n"; +} sub do_sync { @@ -283,17 +297,20 @@ sub do_sync { $D_action = '-'; } - foreach my $pair (@{$status->{added}}) { + my $notmuch = spawn ({}, '|-', qw/notmuch tag --batch/) +or die 'notmuch tag --batch'; -notmuch ('tag', $A_action.$TAGPREFIX.$pair->{tag}, -'id:'.$pair->{id}); + foreach my $pair (@{$status->{added}}) { +print $notmuch pair_to_batch_line ($A_action, $pair); } foreach my $pair (@{$status->{deleted}}) { -notmuch ('tag', $D_action.$TAGPREFIX.$pair->{tag}, -'id:'.$pair->{id}); +print $notmuch pair_to_batch_line ($D_action, $pair); } + unless (close $notmuch) { +die "'notmuch tag --batch' exited with nonzero value\n"; + } } -- 1.7.10.4 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[Patch v2 2/4] nmbug: use 'notmuch tag --batch'
From: David Bremner This should be more robust with respect to tags with whitespace and and other special characters. It also (hopefully) fixes a remaining bug handling message-ids with whitespace. It should also be noticeably faster for large sets of changes since it does one exec per change set as opposed to one exec per tag changed. --- devel/nmbug/nmbug | 27 ++- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/devel/nmbug/nmbug b/devel/nmbug/nmbug index befc3d9..73d64fe 100755 --- a/devel/nmbug/nmbug +++ b/devel/nmbug/nmbug @@ -267,6 +267,20 @@ sub do_checkout { do_sync (action => 'checkout'); } +sub quote_for_xapian { + my $str = shift; + $str =~ s/"/""/g; + return '"' . $str . '"'; +} + +sub pair_to_batch_line { + my ($action, $pair) = @_; + + # the tag should already be suitably encoded + + return $action . $ENCPREFIX . $pair->{tag} . +' -- id:' . quote_for_xapian ($pair->{id})."\n"; +} sub do_sync { @@ -283,17 +297,20 @@ sub do_sync { $D_action = '-'; } - foreach my $pair (@{$status->{added}}) { + my $notmuch = spawn ({}, '|-', qw/notmuch tag --batch/) +or die 'notmuch tag --batch'; -notmuch ('tag', $A_action.$TAGPREFIX.$pair->{tag}, -'id:'.$pair->{id}); + foreach my $pair (@{$status->{added}}) { +print $notmuch pair_to_batch_line ($A_action, $pair); } foreach my $pair (@{$status->{deleted}}) { -notmuch ('tag', $D_action.$TAGPREFIX.$pair->{tag}, -'id:'.$pair->{id}); +print $notmuch pair_to_batch_line ($D_action, $pair); } + unless (close $notmuch) { +die "'notmuch tag --batch' exited with nonzero value\n"; + } } -- 1.7.10.4