[NEW] dynamic_main: New dynamic main/argv helper!

See t/dynamic_main.bash for an early example of how to use it.
This commit is contained in:
Andrea Rogers 2023-10-31 21:27:05 -05:00
commit 3830737655
2 changed files with 28 additions and 0 deletions

18
dynamic_main.bash Normal file
View file

@ -0,0 +1,18 @@
command -v dedcat || \
source "$(dirname ${BASH_SOURCE[0]})/logging.bash"
[ -z "${fns[@]}" ] && dedcat 'ERROR: Empty or undefined ${fns[@]} array!'
read -d '' HELPSTR <<EOH
Usage: $0 OPERATION
$EXTRA_NOTE
Operations:
$(for fn in ${fns[@]}; do echo " $fn: $($fn help)"; done)
EOH
[[ " ${fns[*]} " =~ [[:space:]]${1}[[:space:]] ]] \
|| dedcat "$HELPSTR"
op="$1"
shift
$op $@

10
t/dynamic_main.bash Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
fns=( hello )
hello() {
[ "$1" == help ] && echo -n "Say \"hello.\"" && return 0
echo hello.
}
. "$(dirname "$0")/../dynamic_main.bash"