#!/bin/bash
# Copyright (C) 2016 Ian Kelling
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+cleanup() { :; }
set -eE -o pipefail
-trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+trap 'cleanup; echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
[[ $EUID == 0 ]] || exec sudo "$BASH_SOURCE" "$@"
-cd $(dirname $(readlink -f "$BASH_SOURCE"))
+src=$(readlink -f "${BASH_SOURCE%/*}")
+
+e() { echo "$*"; "$@"; }
mount_dir=$(mktemp -d)
-mount -o users wrt:/mnt/usb $mount_dir
+cleanup() { cd; umount -f $mount_dir; }
+e mount -o users wrt:/mnt/usb $mount_dir
+
cd $mount_dir
-rm -rf debian-wheezy
+e rm -rf debian-wheezy
mkdir debian-wheezy
cd debian-wheezy
-debian-preseed "$@" # my script
+e $src/debian-preseed "$@" # my script
cd ..
-rm -f tftpboot
-ln -s debian-wheezy tftpboot
+e rm -f tftpboot
+e ln -s debian-wheezy tftpboot
cd /
-umount $mount_dir
-pxe-server plain # my script
+e umount $mount_dir
+e $src/pxe-server default plain # my script