summaryrefslogtreecommitdiff
path: root/etckeeper-bzr
diff options
context:
space:
mode:
Diffstat (limited to 'etckeeper-bzr')
-rwxr-xr-xetckeeper-bzr/__init__.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/etckeeper-bzr/__init__.py b/etckeeper-bzr/__init__.py
new file mode 100755
index 0000000..a5381c5
--- /dev/null
+++ b/etckeeper-bzr/__init__.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+# Bazaar plugin that runs etckeeper pre-commit when necessary
+
+"""Runs etckeeper pre-commit when necessary."""
+
+import bzrlib
+from bzrlib.mutabletree import MutableTree
+from bzrlib.errors import BzrError, NotLocalUrl
+import os
+import subprocess
+
+if bzrlib.version_info[:2] < (1,4):
+ raise "Version of Bazaar to old. Need at least 1.4."
+
+def etckeeper_startcommit_hook(tree):
+ if not os.path.exists(tree.abspath(".etckeeper")):
+ # Only run the commit hook when this is an etckeeper branch
+ return
+ ret = subprocess.call(["etckeeper", "pre-commit", tree.abspath(".")])
+ if ret != 0:
+ raise BzrError("etckeeper pre-commit failed")
+
+MutableTree.hooks.install_hook('start_commit', etckeeper_startcommit_hook)
+MutableTree.hooks.name_hook(etckeeper_startcommit_hook, "etckeeper")
+
+if __name__ == "__main__":
+ from distutils.core import setup
+ setup(name="bzr-etckeeper",
+ packages=["bzrlib.plugins.etckeeper"],
+ package_dir={"bzrlib.plugins.etckeeper":"etckeeper-bzr"})