Bump Standards-Version to 3.9.2
[grml-quickconfig.git] / grml-quickconfig
index 52a22ac..de47f21 100755 (executable)
@@ -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 "\e(B\e)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
@@ -136,11 +160,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 +175,6 @@ while : ; do
         esac
 
 done
-echo "Happy Hacking"
 # }}}
 
 ## END OF FILE #################################################################