gui: Introduce _set_dialog_ret().
[gsu.git] / subcommand
index 6b5df0a37c2a676c7c86d74c5a07371fddd2e1bf..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.
@@ -49,23 +50,22 @@ _gsu_available_commands()
 }
 
 _gsu_print_available_commands()
-{(
-       local i count=0
-       gsu_short_msg "Available commands:"
-       for i in $gsu_cmds; do
-               printf "$i"
-               count=$(($count + 1))
-               if test $(($count % 4)) -eq 0; then
-                       echo
+{
+       local cmd
+       local -i count=0
+
+       printf 'Available commands:\n'
+       for cmd in $gsu_cmds; do
+               printf '%s' "$cmd"
+               let count++
+               if (($count % 4)); then
+                       printf '\t'
+                       ((${#cmd} < 8)) && printf '\t'
                else
-                       printf "\t"
-                       if test ${#i} -lt 8; then
-                               printf "\t"
-                       fi
+                       printf '\n'
                fi
        done
-       echo
-) 2>&1
+       printf '\n'
 }
 
 gsu_complete_options()
@@ -110,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
@@ -160,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."
@@ -180,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}"
@@ -192,11 +190,6 @@ _com_man()
         ret=$GSU_SUCCESS
 }
 
-_gsu_banner_msg()
-{
-       gsu_short_msg "### $_gsu_self -- ###"
-}
-
 export gsu_help_txt="
 Print online help.
 
@@ -227,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 "--"
@@ -257,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
@@ -337,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
@@ -531,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
@@ -544,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
@@ -555,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
@@ -586,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
 }