From: David Bremner <[email protected]>

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

Reply via email to