#!/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
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