X-Git-Url: http://git.grml.org/?p=grml-quickconfig.git;a=blobdiff_plain;f=grml-quickconfig;h=1a6e2543ba65d9ccd83f88d67ba78705ecfc765c;hp=52a22ac88c9c2fb8444eb0bede050ad1ead47975;hb=d093f237865abcf5fe290493915b250f5f0244a2;hpb=ca2253895f8dc823aac74aa915e6840ae25b506d diff --git a/grml-quickconfig b/grml-quickconfig index 52a22ac..1a6e254 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 @@ -25,13 +27,16 @@ typeset -A keymap HLINE="$B x $N" VLINE=$(repeat $MAXLEN echo -n q) -HILIGHT="$GREEN" -HILIGHT_NAME="$MAGENTA" +HIGHLIGHT="$GREEN" +HIGHLIGHT_NAME="$MAGENTA" SCRIPTDIR="/usr/share/grml-quickconfig/" # enable alternate console fonts echo -n "(B)0" + +# set zsh options +setopt no_nomatch # }}} @@ -56,8 +61,8 @@ print_delim() { echo $B ${BLUE}t"$VLINE"u${NORMAL} $N } -hilight_char() { - echo $1 | sed -e "s/$2/$HILIGHT$2$NORMAL/" +highlight_char() { + echo $1 | sed -e "s/$2/$HIGHLIGHT$2$NORMAL/" } print_menu() { @@ -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,18 +110,26 @@ 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 @@ -126,7 +147,7 @@ done # }}} if [ -z "$info" ] ; then - exit 1 + bailout 1 fi # mainloop {{{ while : ; do @@ -136,11 +157,12 @@ while : ; do get_key INPUT case $INPUT in [q|Q|$'\n']) - echo + echo $INPUT break ;; [${(k)keys}]) - eval ${keymap[$INPUT]} + echo $INPUT + eval ${keymap[$INPUT]} || true ;; *) echo "Unknown key" @@ -150,7 +172,6 @@ while : ; do esac done -echo "Happy Hacking" # }}} ## END OF FILE #################################################################