mtnpatch: resurrect mtnpatch
authorJustin Patrin <papercrane@gmail.com>
Tue, 5 Sep 2006 16:28:02 +0000 (16:28 +0000)
committerJustin Patrin <papercrane@gmail.com>
Tue, 5 Sep 2006 16:28:02 +0000 (16:28 +0000)
contrib/mtnpatch.py [new file with mode: 0755]

diff --git a/contrib/mtnpatch.py b/contrib/mtnpatch.py
new file mode 100755 (executable)
index 0000000..73143db
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+import sys, os, string, getopt, re
+
+mtncmd = "monotone"
+
+def main(argv = None):
+    if argv is None:
+        argv = sys.argv
+    opts, list = getopt.getopt(sys.argv[1:], ':R')
+    if len(list) < 1:
+        print "You must specify a file"
+        return 2
+    reverse = False
+    for o, a in opts:
+        if o == "-R":
+            reverse = True
+    if os.path.exists(list[0]):
+        input = open(list[0], 'r')
+        renameFrom = ""
+        cmd = ""
+        if reverse:
+            print "patch -R -p0 < %s" % list[0]
+        else:
+            print "patch -p0 < %s" % list[0]
+        for line in input:
+            if len(line) > 0:
+                if line[0] == '#':
+                    matches = re.search("#\s+(\w+)\s+\"(.*)\"", line)
+                    if matches is not None:
+                        cmd = matches.group(1)
+                        fileName = matches.group(2)
+                        if cmd == "delete_file":
+                            if reverse:
+                                print "%s add %s" % (mtncmd, fileName)
+                            else:
+                                print "%s drop -e %s" % (mtncmd, fileName)
+                        elif cmd == "add_file":
+                            if reverse:
+                                print "%s drop -e %s" % (mtncmd, fileName)
+                            else:
+                                print "%s add %s" % (mtncmd, fileName)
+                        elif cmd == "rename_file":
+                            renameFrom = fileName
+                        elif cmd == "to" and renameFrom != "":
+                            if reverse:
+                                print "%s rename -e %s %s" % (mtncmd, fileName, renameFrom)
+                            else:
+                                print "%s rename -e %s %s" % (mtncmd, renameFrom, fileName)
+                            renameFrom = ""
+                        else:
+                            cmd = ""
+
+if __name__ == "__main__":
+    sys.exit(main())