#!/bin/sh set -e conf=/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 if [ ! -z "$LOWLEVEL_PACKAGE_MANAGER" ]; then export LOWLEVEL_PACKAGE_MANAGER fi if [ -z "$1" ]; then 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 [ "x$1" = "x-d" ]; then if [ -n "$2" ]; then cd "$2" shift 2 else usage fi else cd /etc fi 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