]> git.tuebingen.mpg.de Git - gsu.git/commitdiff
Merge branch 't/kill_pointless_subshell'
authorAndre Noll <maan@tuebingen.mpg.de>
Sat, 27 Sep 2014 23:00:45 +0000 (23:00 +0000)
committerAndre Noll <maan@tuebingen.mpg.de>
Sat, 27 Sep 2014 23:00:45 +0000 (23:00 +0000)
Cooking for almost a month.

* t/kill_pointless_subshell:
  subcommand: Overhaul _gsu_print_available_commands().

common
config
gui
subcommand

diff --git a/common b/common
index bd8276b2a96954eef6ef05dfe4cbad5ccf2c1a62..eaa5751b43a9133fba3e497b5d45babe1e46b0e9 100644 (file)
--- a/common
+++ b/common
@@ -35,7 +35,7 @@ EOF
 gsu_is_a_number()
 {
        result="$1"
-       if test "$1" -eq "$1" &> /dev/null; then
+       if (("$1" == "$1")) &> /dev/null; then
                ret=$GSU_SUCCESS
        else
                ret=-$E_GSU_NOT_A_NUMBER
@@ -49,12 +49,12 @@ gsu_short_msg()
 
 gsu_msg()
 {
-       gsu_short_msg "$_gsu_self: $1"
+       gsu_short_msg "$gsu_name: $1"
 }
 
 gsu_date_msg()
 {
-       gsu_short_msg "$_gsu_self $(date): $1"
+       gsu_short_msg "$gsu_name $(date): $1"
 }
 
 gsu_err_msg()
@@ -62,11 +62,11 @@ gsu_err_msg()
        local txt="$result" err
 
        gsu_is_a_number "$ret"
-       if test $ret -lt 0; then
+       if (($ret < 0)); then
                gsu_msg "unknown error ($ret:$txt)"
                exit 1
        fi
-       if test $result -ge 0; then
+       if (($result >= 0)); then
                gsu_msg "unknown error ($result:$txt)"
                exit 1
        fi
@@ -81,8 +81,7 @@ gsu_err_msg()
 
 _gsu_setup()
 {
-       _gsu_self="$(basename $0)"
-       gsu_name="${gsu_name:=$_gsu_self}"
+       gsu_name="${gsu_name:-${0##*/}}"
        gsu_config_var_prefix="${gsu_config_var_prefix:=$gsu_name}"
        gsu_banner_txt="${gsu_banner_txt:-set \$gsu_banner_txt to customize this message}"
        _gsu_init_errors
diff --git a/config b/config
index 09330f355cc5b16d8cb0288760f3c620f92c65ef..0663e340fdcf26e5824d69ae8821081abcfa9206 100644 (file)
--- a/config
+++ b/config
@@ -27,7 +27,7 @@ gsu_check_options()
                result="name: '$name'"
                # bash's =~ works only for 3.2 and newer, so use grep
                echo "$name" | grep '^[a-zA-Z][a-zA-Z_0123456789]*$' &> /dev/null;
-               [[ $? -ne 0 ]] && return
+               (($? != 0)) && return
 
                eval orig_val='"'\$orig_${gsu_config_var_prefix}_$name'"'
                if [[ -z "$orig_val" ]]; then
@@ -57,7 +57,7 @@ gsu_check_options()
                        ;;
                num)
                        gsu_is_a_number "$val"
-                       [[ $ret -lt 0 ]] && return
+                       (($ret < 0)) && return
                        ;;
                *)
                        ret=-$E_GSU_BAD_OPTION_TYPE
@@ -79,7 +79,7 @@ gsu_check_options_or_die()
 }
 
 if [[ "$(type -t _gsu_setup)" != "function" ]]; then
-       gsu_dir=${gsu_dir:=${HOME:-}/.gsu}
+       gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}}
        . $gsu_dir/common || exit 1
        _gsu_setup
 fi
diff --git a/gui b/gui
index eb9f29f37c9e1d7aef03c96f08b4838285931f1a..72717a1ecd30750990073c86ceb47bc8f65604e6 100644 (file)
--- a/gui
+++ b/gui
@@ -1,8 +1,9 @@
 #!/bin/bash
 
-if [[ $(type -t gsu_is_a_number) != "function" ]]; then
-       GSU_DIR=${GSU_DIR:=${HOME:-}/.gsu}
-       . $GSU_DIR/common || exit 1
+if [[ "$(type -t _gsu_setup)" != "function" ]]; then
+       gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}}
+       . $gsu_dir/common || exit 1
+       _gsu_setup
 fi
 
 export GSU_NODE_NAME_PATTERN='[a-zA-Z_]'
@@ -200,7 +201,6 @@ gsu_gui()
 {
        local tree="$1" subtree
 
-       _gsu_setup
        type -t dialog &> /dev/null
        if (($? != 0)); then
                gsu_msg "dialog executable not found"
index f668f2adb5332bce964fdb1d5cc28e07ad0d7b2f..bded36d1514a09a4c3ed61dc72d11095e470d7b8 100644 (file)
@@ -1,14 +1,15 @@
 #!/bin/bash
 # (C) 2006-2011 Andre Noll
 
-if [[ $(type -t gsu_is_a_number) != "function" ]]; then
-       GSU_DIR=${GSU_DIR:=${HOME-}/.gsu}
-       . $GSU_DIR/common || exit 1
+if [[ "$(type -t _gsu_setup)" != "function" ]]; then
+       gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}}
+       . $gsu_dir/common || exit 1
+       _gsu_setup
 fi
 
 _gsu_usage()
 {
-       gsu_short_msg "# Usage: $_gsu_self command [options]"
+       gsu_short_msg "# Usage: $gsu_name command [options]"
 }
 
 # Return an extended regular expression to match against $0.
@@ -109,11 +110,11 @@ _com_prefs()
                ret=-$E_GSU_MKDIR
                result="${conf%/*}"
                mkdir -p "$result"
-               [[ $? -ne 0 ]] && return
+               (($? != 0)) && return
                ret=-$E_GSU_EDITOR
                result="${EDITOR:-vi}"
                "$result" "$conf"
-               [[ $? -ne 0 ]] && return
+               (($? != 0)) && return
                ret=$GSU_SUCCESS
                return
        fi
@@ -159,15 +160,15 @@ _com_man()
        local minus_signs="--------------------------------------------------"
         local com num
 
-       echo "$_gsu_self (_${gsu_banner_txt}_) manual"
-       echo "${equal_signs:0:${#_gsu_self} + ${#gsu_banner_txt} + 16}"
+       echo "$gsu_name (_${gsu_banner_txt}_) manual"
+       echo "${equal_signs:0:${#gsu_name} + ${#gsu_banner_txt} + 16}"
        echo
 
         sed -e '1,/^#\{70,\}/d' -e '/^#\{70,\}/,$d' $0 -e 's/^# *//'
        echo "----"
         echo
-       echo "$_gsu_self usage"
-       echo "${minus_signs:0:${#_gsu_self} + 6}"
+       echo "$gsu_name usage"
+       echo "${minus_signs:0:${#gsu_name} + 6}"
        printf "\t"
        _gsu_usage 2>&1
        echo "Each command has its own set of options as described below."
@@ -179,9 +180,7 @@ _com_man()
        _gsu_available_commands
         for com in $result; do
                num=${#com}
-               if test $num -lt 4; then
-                       num=4
-               fi
+               (($num < 4)) && num=4
                 echo "${minus_signs:0:$num}"
                 echo "$com"
                 echo "${minus_signs:0:$num}"
@@ -191,11 +190,6 @@ _com_man()
         ret=$GSU_SUCCESS
 }
 
-_gsu_banner_msg()
-{
-       gsu_short_msg "### $_gsu_self -- ###"
-}
-
 export gsu_help_txt="
 Print online help.
 
@@ -226,7 +220,7 @@ _com_help()
        ere="$result"
 
        if (($# == 0)); then
-               _gsu_banner_msg 2>&1
+               gsu_short_msg "### $gsu_name -- $gsu_banner_txt ###"
                _gsu_usage 2>&1
                {
                        printf "com_help()\n$gsu_help_txt" | head -n 4; echo "--"
@@ -256,7 +250,7 @@ _com_help()
                                # and print the sucker
                                p'
                echo
-               echo "# Try $_gsu_self help <command> for info on <command>."
+               echo "# Try $gsu_name help <command> for info on <command>."
                ret=$GSU_SUCCESS
                return
        fi
@@ -336,7 +330,7 @@ gsu_getopts()
 '
 
        gsu_check_arg_count $# 1 1
-       if [[ $ret -lt 0 ]]; then
+       if (($ret < 0)); then
                gsu_err_msg
                exit 1
        fi
@@ -530,10 +524,9 @@ gsu_get_unnamed_arg_num()
 gsu()
 {
        local i
-       _gsu_setup
        _gsu_available_commands
        gsu_cmds="$result"
-       if test $# -eq 0; then
+       if (($# == 0)); then
                _gsu_usage
                _gsu_print_available_commands
                exit 1
@@ -543,7 +536,7 @@ gsu()
        # check internal commands
        if [[ "$arg" = "help" || "$arg" = "man" || "$arg" = "prefs" || "$arg" = "complete" ]]; then
                _com_$arg "$@"
-               if [[ "$ret" -lt 0 ]]; then
+               if (("$ret" < 0)); then
                        gsu_err_msg
                        exit 1
                fi
@@ -554,7 +547,7 @@ gsu()
        for i in $gsu_cmds; do
                if test "$arg" = "$i"; then
                        com_$arg "$@"
-                       if [[ "$ret" -lt 0 ]]; then
+                       if (("$ret" < 0)); then
                                gsu_err_msg
                                exit 1
                        fi
@@ -585,16 +578,16 @@ gsu()
 gsu_check_arg_count()
 {
        ret=-$E_GSU_BAD_ARG_COUNT
-       if [[ $# -eq 2 ]]; then # only num1 is given
+       if (($# == 2)); then # only num1 is given
                result="at least $2 args required, $1 given"
-               [[ $1 -lt $2 ]] && return
+               (($1 < $2)) && return
                ret=$GSU_SUCCESS
                return
        fi
        # num1 and num2 given
        result="need at least $2 args, $1 given"
-       [[ $1 -lt $2 ]] && return
+       (($1 < $2)) && return
        result="need at most $3 args, $1 given"
-       [[ $1 -gt $3 ]] && return
+       (($1 > $3)) && return
        ret=$GSU_SUCCESS
 }