Remove now obsolete precommit script for bzr.
[jelmer/etckeeper.git] / etckeeper
index f78afdfff3feffcab5273eed3bdf37c1689a5c77..49d106380c26f228fe42b079ec3cb83b82232f7e 100755 (executable)
--- a/etckeeper
+++ b/etckeeper
@@ -1,13 +1,32 @@
 #!/bin/sh
 set -e
+conf=/etc/etckeeper/etckeeper.conf
 
-if [ -e /etc/etckeeper/etckeeper.conf ]; then
-       . /etc/etckeeper/etckeeper.conf
+usage() {
+       echo "usage: etckeeper command [-d directory]" >&2
+       exit 1
+}
+
+if [ -e $conf ]; then
+       . $conf
+fi
+
+if [ -z "$VCS" ]; then
+       echo "Please configure a VCS in $conf" >&2
+       exit 1
 fi
+export VCS
 
 if [ ! -z "$GIT_COMMIT_OPTIONS" ]; then
        export GIT_COMMIT_OPTIONS
 fi
+if [ ! -z "$HG_COMMIT_OPTIONS" ]; then
+       export HG_COMMIT_OPTIONS
+fi
+if [ ! -z "$BZR_COMMIT_OPTIONS" ]; then
+       export BZR_COMMIT_OPTIONS
+fi
+
 if [ ! -z "$HIGHLEVEL_PACKAGE_MANAGER" ]; then
        export HIGHLEVEL_PACKAGE_MANAGER
 fi
@@ -16,21 +35,43 @@ if [ ! -z "$LOWLEVEL_PACKAGE_MANAGER" ]; then
 fi
 
 if [ -z "$1" ]; then
-       echo "usage: etckeeper command [directory]" >&2
-       exit 1
+       usage
 fi
 command="$1"
 shift 1
 
+# compatability code
+if [ "$command" = "post-apt" ]; then
+       command=post-install
+elif [ "$command" = "pre-apt" ]; then
+       command=pre-install
+fi
+
 if [ ! -d "/etc/etckeeper/$command.d" ]; then
        echo "etckeeper: /etc/etckeeper/$command.d does not exist" >&2
        exit 1
 fi
 
-if [ -n "$1" ]; then
-       cd "$1"
+if [ "x$1" = "x-d" ]; then
+       if [ -n "$2" ]; then
+               cd "$2"
+               shift 2
+       else
+               usage
+       fi
 else
        cd /etc
 fi
 
-run-parts --exit-on-error "/etc/etckeeper/$command.d"
+lsscripts() {
+       perl -e '
+               $dir=shift;
+               print join "\n", grep { ! -d $_ && -x $_ }
+                       grep /^\Q$dir\/\E[-a-zA-Z0-9]+$/,
+                       glob "$dir/*";
+       ' "$1"
+}
+
+for script in $(lsscripts "/etc/etckeeper/$command.d"); do
+       "$script" "$@"
+done