Merge branch 't/default_gsu_dir'
authorAndre Noll <maan@tuebingen.mpg.de>
Sat, 27 Sep 2014 22:59:43 +0000 (22:59 +0000)
committerAndre Noll <maan@tuebingen.mpg.de>
Sat, 27 Sep 2014 22:59:43 +0000 (22:59 +0000)
Cooking for almost a month.

* t/default_gsu_dir:
  Unify gsu_dir handling.

1  2 
config
subcommand

diff --combined config
--- 1/config
--- 2/config
+++ b/config
@@@ -27,7 -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 +57,7 @@@
                        ;;
                num)
                        gsu_is_a_number "$val"
 -                      [[ $ret -lt 0 ]] && return
 +                      (($ret < 0)) && return
                        ;;
                *)
                        ret=-$E_GSU_BAD_OPTION_TYPE
@@@ -79,7 -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 --combined subcommand
@@@ -1,14 -1,15 +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.
@@@ -110,11 -111,11 +111,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 -161,15 +161,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.
  
@@@ -220,7 -228,7 +221,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
@@@ -330,7 -338,7 +331,7 @@@ gsu_getopts(
  '
  
        gsu_check_arg_count $# 1 1
 -      if [[ $ret -lt 0 ]]; then
 +      if (($ret < 0)); then
                gsu_err_msg
                exit 1
        fi
@@@ -524,10 -532,9 +525,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
  }