From: David Bremner <bremner@debian.org> In this initial version, we take care of import and export of the appropriate tags in line oriented format amenable to easy merging. We also provide (not very robust/clever) commands commit/push/pull to deal with a git repo that as already been set up. --- fixed silly debugging output. add some convenience commands. contrib/nmbug | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 0 deletions(-) create mode 100755 contrib/nmbug diff --git a/contrib/nmbug b/contrib/nmbug new file mode 100755 index 0000000..a449d60 --- /dev/null +++ b/contrib/nmbug @@ -0,0 +1,77 @@ +#!/bin/bash +# Copyright (c) 2011 David Bremner +# License: same as notmuch + +NMHOME=${HOME}/.nmbug + +NMTAGS=($(notmuch search --output=tags "*"|grep "^notmuch::")) + +function dump() { + notmuch dump -- $(printf " tag:%s" ${NMTAGS[*]}) |\ + while read -r msgid rest + do + outfile=$NMHOME/tags/$(echo $msgid | sha1sum - | cut -f1 -d' ') + printf "msg-id: %s\n" $msgid > $outfile + tmp=${rest#\(} + read -r -a tags <<<${tmp%\)}; + for tag in "${tags[@]}"; do + case $tag in + notmuch::*) + echo "tag: $tag" >> $outfile + ;; + *) + # nothing + esac + done + done + +} + +function cat_file() { + tags="" + id="" + cat $1 |\ + while read -r what data + do + case $what in + msg-id:) + printf "%s (" $data + ;; + tag:) + printf "%s " $data + ;; + *) + echo "Syntax error $what" + exit 1 + esac + done + echo ")" +} + +function restore() { + find $NMHOME/tags -type f |\ + while read -r filename + do + cat_file $filename + done | notmuch restore --match=notmuch:: +} +case $1 in + dump) + dump + ;; + restore) + restore + ;; + commit) + (cd $NMHOME && git add tags && git commit) + ;; + push) + (cd $NMHOME && git push) + ;; + pull) + (cd $NMHOME && git pull) + ;; + *) + echo unknown command $1; +esac + -- 1.7.6.3