diff options
Diffstat (limited to 'etckeeper-bzr/__init__.py')
-rw-r--r-- | etckeeper-bzr/__init__.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/etckeeper-bzr/__init__.py b/etckeeper-bzr/__init__.py new file mode 100644 index 0000000..3fa87d1 --- /dev/null +++ b/etckeeper-bzr/__init__.py @@ -0,0 +1,34 @@ +# +# Bazaar plugin that runs etckeeper pre-commit when necessary + +"""Runs etckeeper pre-commit when necessary.""" + +from bzrlib.errors import BzrError +import os + +def etckeeper_startcommit_hook(tree): + abspath = getattr(tree, "abspath", None) + if abspath is None or not os.path.exists(abspath(".etckeeper")): + # Only run the commit hook when this is an etckeeper branch + return + import subprocess + ret = subprocess.call(["etckeeper", "pre-commit", abspath(".")]) + if ret != 0: + raise BzrError("etckeeper pre-commit failed") + +try: + from bzrlib.hooks import install_lazy_named_hook +except ImportError: + from bzrlib.mutabletree import MutableTree + MutableTree.hooks.install_named_hook('start_commit', + etckeeper_startcommit_hook, 'etckeeper') +else: + install_lazy_named_hook( + "bzrlib.mutabletree", "MutableTree.hooks", + 'start_commit', 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"}) |