set_default () { eval ": \${$1:=$2}" } # http://www.linuxjournal.com/content/use-bash-trap-statement-cleanup-temporary-files on_exit() { for i in "${on_exit_items[@]}" do eval $i done } add_on_exit() { local n=${#on_exit_items[*]} on_exit_items[$n]="$*" if [[ $n -eq 0 ]]; then trap on_exit EXIT fi } get_recipe_file () { for x in "$1" "$RECIPE_DIR/$1" "$RECIPE_DIR/$1.rcp" "$RECIPE_DIR/$1.el"; do if [ -e "$x" ]; then echo "$x" break fi done } test_recipe () { # $1 = # $2 = mode=$1 recipe_file="$(get_recipe_file "$2")" if [ ! -n "$recipe_file" ]; then echo "*** Skipping nonexistent recipe $2 ***" return fi echo "*** Testing el-get recipe $recipe_file ***" mkdir -p "$TEST_HOME"/.emacs.d if [ -n "$DO_NOT_CLEAN" ]; then echo "Running test without removing $TEST_HOME first"; else add_on_exit "rm -rf $TEST_HOME" rm -rf "$TEST_HOME" fi mkdir -p "$TEST_HOME"/.emacs.d/el-get/ TMPDIR="$TEST_HOME" lisp_temp_file=`mktemp` add_on_exit "rm -f $lisp_temp_file" cat >"$lisp_temp_file" <