}
export -f _gsu_usage
+# Each line matching this is recognized as a subcommand. The name
+# of the subcommand is the first subexpression.
+export gsu_command_regex='^com_\([a-zA-Z_0-9]\+\)()'
+
_gsu_available_commands()
{
- result="$( (printf "help\nman\nprefs\n"; grep "^com_[a-z_]\+()" $0) \
- | sed -e 's/^com_//' -e 's/()//' \
- | sort \
- | tr '\n' ' ')"
- ret=$GSU_SUCCESS
+ result="$({
+ printf "help\nman\nprefs\n"
+ sed -ne "s/$gsu_command_regex/\1/g;T;p" $0
+ } | sort | tr '\n' ' ')"
}
export -f _gsu_available_commands
printf "com_help()\n$gsu_help_txt" | head -n 4; echo "--"
printf "com_man()\n$gsu_man_txt" | head -n 4; echo "--"
printf "com_prefs()\n$gsu_prefs_txt" | head -n 4; echo "--"
- grep -A 2 "^com_\([a-zA-Z_0-9]\+\)()" $0
+ grep -A 2 "$gsu_command_regex" $0
} | grep -v -- '--' \
- | sed -e '/^com_\([a-zA-Z_0-9]\+\)()/bs' \
+ | sed -e "/$gsu_command_regex/bs" \
-e 'H;$!d;x;s/\n//g;b' \
-e :s \
-e 'x;s/\n//g;${p;x;}' \
- | sed -e 's/^com_\([a-zA-Z_0-9]\+\)()#*/\1\t/' \
+ | sed -e "s/${gsu_command_regex}#*/\1\t/" \
| sort \
| while read a b; do
printf "$a\t"