[PATCH] contrib/nmbug: new script for sharing tags with prefix notmuch::

David Bremner david at tethera.net
Sat Oct 29 09:45:07 PDT 2011


From: David Bremner <bremner at debian.org>

In this initial version, we take care of only the base import and
export of the appropriate tags in line oriented format amenable to
easy merging.

The current plan to use git to share tags and resolve conflicts.
---
 contrib/nmbug |   69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 69 insertions(+), 0 deletions(-)
 create mode 100755 contrib/nmbug

diff --git a/contrib/nmbug b/contrib/nmbug
new file mode 100755
index 0000000..e9d1b14
--- /dev/null
+++ b/contrib/nmbug
@@ -0,0 +1,69 @@
+#!/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' ')
+	echo $outfile
+	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
+	;;
+    *)
+	echo unknown command $1;
+esac
+   
-- 
1.7.6.3



More information about the notmuch mailing list