]> 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().

1  2 
subcommand

diff --combined subcommand
index 95e0ba9ebbc48aa5f8753d2e8fc42d8e594a26b7,f668f2adb5332bce964fdb1d5cc28e07ad0d7b2f..bded36d1514a09a4c3ed61dc72d11095e470d7b8
@@@ -1,15 -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.
@@@ -50,23 -49,22 +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()
@@@ -111,11 -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
@@@ -161,15 -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."
        _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}"
          ret=$GSU_SUCCESS
  }
  
 -_gsu_banner_msg()
 -{
 -      gsu_short_msg "### $_gsu_self -- ###"
 -}
 -
  export gsu_help_txt="
  Print online help.
  
@@@ -221,7 -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 "--"
                                # 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
@@@ -331,7 -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
@@@ -525,9 -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
        # 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
        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
  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
  }