X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=grml-quickconfig;h=9da12b0e07517299fe299c2e551ca623170d07c4;hb=refs%2Fheads%2Fmaster;hp=52a22ac88c9c2fb8444eb0bede050ad1ead47975;hpb=ca2253895f8dc823aac74aa915e6840ae25b506d;p=grml-quickconfig.git diff --git a/grml-quickconfig b/grml-quickconfig index 52a22ac..9da12b0 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,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,18 @@ while : ; do echo get_key INPUT case $INPUT in - [q|Q|$'\n']) - echo + [qQ$'\n']) + echo $INPUT + break + ;; + [rR]) + echo $INPUT + exec grml-quickconfig break ;; [${(k)keys}]) - eval ${keymap[$INPUT]} + echo $INPUT + eval ${keymap[$INPUT]} || true ;; *) echo "Unknown key" @@ -150,7 +180,6 @@ while : ; do esac done -echo "Happy Hacking" # }}} ## END OF FILE #################################################################