gsu: Remove unused variable "tilde_signs".
[gsu.git] / funcs / gsu
index 106663af381b04b6f2650856952c986592f4f9d5..37092a3985ee835768dbfc5ec7d4fd2fcd68f572 100644 (file)
--- a/funcs/gsu
+++ b/funcs/gsu
@@ -85,7 +85,7 @@ gsu_err_msg()
        else
                txt="${gsu_error_txt[$err]}"
        fi
        else
                txt="${gsu_error_txt[$err]}"
        fi
-        echo "$gsu_self: $txt" 1>&2
+       gsu_msg "$txt"
 }
 export -f gsu_err_msg
 
 }
 export -f gsu_err_msg
 
@@ -95,6 +95,81 @@ gsu_usage()
 }
 export -f gsu_usage
 
 }
 export -f gsu_usage
 
+gsu_available_commands()
+{
+       result="$( (printf "help\nman\n"; grep "^com_[a-z_]\+()" $0) \
+               | sed -e 's/^com_//' -e 's/()//' \
+               | sort \
+               | tr '\n' ' ')"
+       ret=$GSU_SUCCESS
+}
+export -f gsu_available_commands
+
+gsu_print_available_commands()
+{(
+       local i count
+       gsu_short_msg "Available commands:"
+       for i in $gsu_cmds; do
+               printf "$i"
+               count=$(($count + 1))
+               if test $(($count % 4)) -eq 0; then
+                       echo
+               else
+                       printf "\t"
+                       if test ${#i} -lt 8; then
+                               printf "\t"
+                       fi
+               fi
+       done
+       echo
+) 2>&1
+}
+export -f gsu_print_available_commands
+
+export gsu_man_txt="
+Print the manual.
+
+Usage: man"
+
+com_man()
+{
+       local equal_signs="=================================================="
+       local minus_signs="--------------------------------------------------"
+        local com num
+
+       echo "$gsu_self (_${gsu_banner_txt}_) manual"
+       echo "${equal_signs:0:${#gsu_self} + ${#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}"
+       printf "\t"
+       gsu_usage 2>&1
+       echo "Each command has its own set of options as described below."
+       echo
+       echo "----"
+       echo
+       echo "Available commands:"
+
+       gsu_available_commands
+        for com in $result; do
+               num=${#com}
+               if test $num -lt 4; then
+                       num=4
+               fi
+                echo "${minus_signs:0:$num}"
+                echo "$com"
+                echo "${minus_signs:0:$num}"
+                $0 help $com
+               echo
+        done
+        ret=$GSU_SUCCESS
+}
+export -f com_man
+
 export gsu_help_txt="
 Print online help.
 
 export gsu_help_txt="
 Print online help.
 
@@ -102,14 +177,18 @@ Usage: help [command]
 
 Without arguments, print the list of available commands. Otherwise,
 print the help text for the given command."
 
 Without arguments, print the list of available commands. Otherwise,
 print the help text for the given command."
+
 com_help()
 {
        local a b
        if test -z "$1"; then
 com_help()
 {
        local a b
        if test -z "$1"; then
-               gsu_banner_msg
-               gsu_usage
+               gsu_banner_msg 2>&1
+               gsu_usage 2>&1
                # sed is magic, baby
                # sed is magic, baby
-               grep -A 2 "^com_\([a-zA-Z_0-9]\+\)()" $0 \
+               (printf "com_help()\n$gsu_help_txt" | head -n 4; echo "--"
+               printf "com_man()\n$gsu_man_txt" | head -n 4; echo "--"
+
+               grep -A 2 "^com_\([a-zA-Z_0-9]\+\)()" $0) \
                        | grep -v -- '--' \
                        | sed -e '/^com_\([a-zA-Z_0-9]\+\)()/bs' \
                                -e 'H;$!d;x;s/\n//g;b' \
                        | grep -v -- '--' \
                        | sed -e '/^com_\([a-zA-Z_0-9]\+\)()/bs' \
                                -e 'H;$!d;x;s/\n//g;b' \
@@ -125,12 +204,17 @@ com_help()
                                echo "$b"
                         done
                echo
                                echo "$b"
                         done
                echo
-               gsu_msg "Try $gsu_self help <command> for info on <command>."
+               echo "Try $gsu_self help <command> for info on <command>."
                ret=$GSU_SUCCESS
                return
        fi
        if test "$1" = "help"; then
                ret=$GSU_SUCCESS
                return
        fi
        if test "$1" = "help"; then
-               gsu_short_msg "$gsu_help_txt"
+               echo "$gsu_help_txt"
+               ret=$GSU_SUCCESS
+               return
+       fi
+       if test "$1" = "man"; then
+               echo "$gsu_man_txt"
                ret=$GSU_SUCCESS
                return
        fi
                ret=$GSU_SUCCESS
                return
        fi
@@ -145,39 +229,10 @@ com_help()
 }
 export -f com_help
 
 }
 export -f com_help
 
-gsu_available_commands()
-{
-       result="$( (echo help; grep "^com_[a-z_]\+()" $0) \
-               | sed -e 's/^com_//' -e 's/()//' \
-               | sort \
-               | tr '\n' ' ')"
-       ret=$SUCCESS
-}
-export -f gsu_available_commands
-
-gsu_print_available_commands()
-{(
-       local i count
-       gsu_short_msg "Available commands:"
-       for i in $gsu_cmds; do
-               printf "$i"
-               count=$(($count + 1))
-               if test $(($count % 4)) -eq 0; then
-                       echo
-               else
-                       printf "\t"
-                       if test ${#i} -lt 8; then
-                               printf "\t"
-                       fi
-               fi
-       done
-       echo
-) 2>&1
-}
-export -f gsu_print_available_commands
-
 gsu()
 {
 gsu()
 {
+       local i
+
        gsu_self="$(basename $0)"
        gsu_init_errors
        gsu_available_commands
        gsu_self="$(basename $0)"
        gsu_init_errors
        gsu_available_commands
@@ -191,7 +246,7 @@ gsu()
        shift
        for i in $gsu_cmds; do
                if test "$arg" = "$i"; then
        shift
        for i in $gsu_cmds; do
                if test "$arg" = "$i"; then
-                       com_$arg $*
+                       com_$arg "$@"
                        if test $ret -lt 0; then
                                gsu_err_msg
                                exit 1
                        if test $ret -lt 0; then
                                gsu_err_msg
                                exit 1