X-Git-Url: http://git.grml.org/?p=grml-quickconfig.git;a=blobdiff_plain;f=grml-quickconfig;h=26d0ca960a883cfcff29178a3d2ca913a956af7c;hp=5ac4e0ae0bbda8524733b0c7c1df962c155d21d5;hb=d6b6a5675b682596fcc6084f3c8dd835d8769812;hpb=64cc61f8747c958bd13b8fcf7f78274dc2241182 diff --git a/grml-quickconfig b/grml-quickconfig index 5ac4e0a..26d0ca9 100755 --- a/grml-quickconfig +++ b/grml-quickconfig @@ -6,7 +6,9 @@ # License: This file is licensed under the GPL v2. ################################################################################ -. /etc/grml/sh-lib +set -e + +. /etc/grml/script-functions if ! checkbootparam 'nocolor'; then . /etc/grml_colors fi @@ -32,6 +34,9 @@ SCRIPTDIR="/usr/share/grml-quickconfig/" # enable alternate console fonts echo -n "(B)0" + +# set zsh options +setopt no_nomatch # }}} @@ -75,20 +80,28 @@ run() { } get_key() { - stty -echo ; read -kq $1?"Press a key: " + stty -echo ; read -k ${1}?"Press a key: " +} + +bailout() { + [ -n "$1" ] && RC=$1 || RC=0 + [ -n "$2" ] && print "$2" >&2 + exit $RC } # }}} +trap bailout 1 2 3 3 6 9 14 15 + # check boot parameter {{{ get_menu_dir() { local TARGET="$1" - if [ -d "$TARGET" ] ; then - MENUDIR="$TARGET" + if [ -d "./$TARGET" ] ; then + MENUDIR="./$TARGET" elif [ -d "$SCRIPTDIR/$TARGET" ] ; then MENUDIR="$SCRIPTDIR/$TARGET" fi } -BOOT_PARAM=$(getbootparam menu) +BOOT_PARAM=$(getbootparam menu) || true if [ -n "$TARGET" ] ; then get_menu_dir "$BOOT_PARAM" fi @@ -97,22 +110,33 @@ if [ -n "$1" ] ; then fi if [ -z "$MENUDIR" ] ; then - MENUDIR="$SCRIPTDIR" + if [ -d "$SCRIPTDIR/local" ] ; then + MENUDIR="$SCRIPTDIR/local" + + else + MENUDIR="$SCRIPTDIR" + fi fi # }}} # load modules {{{ -for file in "$MENUDIR"/*.sh ; do +if ! ls "$MENUDIR"/*.sh &>/dev/null ; then + bailout 1 "Error: $MENUDIR is empty, exiting." +fi +ls ${MENUDIR}/*.sh &>/dev/null || exit 1 +for file in ${MENUDIR}/*.sh ; do LINE="" KEY="" FUNCTION="" NAME="" - [ ! -e "$file" ] && break . $file if display_entry ; then setopt noglob if [ -n "$LINE" ] ; then + LINE=$(echo "$LINE" | sed 's#\([^\]\)/\([[:alnum:]_-]*\)/#\1${HIGHLIGHT_NAME}\2${NORMAL}#g') + LINE=$(echo "$LINE" | sed 's#\([^\]\)^\([[:alnum:]]\)#\1${HIGHLIGHT}\2${NORMAL}#g') + LINE=$(echo "$LINE" | sed 's#\\\([^/]\)#\1#g') info+="$(eval $LINE)" fi @@ -126,7 +150,7 @@ done # }}} if [ -z "$info" ] ; then - exit 1 + bailout 1 fi # mainloop {{{ while : ; do @@ -135,12 +159,13 @@ while : ; do echo get_key INPUT case $INPUT in - [q|Q|$'\n']) - echo + [qQ$'\n']) + echo $INPUT break ;; [${(k)keys}]) - eval ${keymap[$INPUT]} + echo $INPUT + eval ${keymap[$INPUT]} || true ;; *) echo "Unknown key" @@ -150,7 +175,6 @@ while : ; do esac done -echo "Happy Hacking" # }}} ## END OF FILE #################################################################