add possibility to run multiple targets

This commit is contained in:
2022-06-01 18:17:28 +03:00
parent 589850ad02
commit b24f409455

12
bake
View File

@@ -62,6 +62,10 @@ Bash-Make: bake
-m Menu of targets with 'smenu' command -m Menu of targets with 'smenu' command
__autocomplete__ get autocomplete function for bash __autocomplete__ get autocomplete function for bash
Targets can get arguments, read from the command line.
Multiple targets can be run by passing them comma separated, but second
arguments can not be used in that case.
Example Bakefile Example Bakefile
# help() { # This help. Note the exact function declaration + docs format. # help() { # This help. Note the exact function declaration + docs format.
# # function names may contain characters: a-zA-Z0-9._- # # function names may contain characters: a-zA-Z0-9._-
@@ -153,7 +157,7 @@ else
# Argument is one of the targets: # Argument is one of the targets:
echo "Running target: $1" >&2 echo "Running target: $1" >&2
"$@" "$@"
elif [[ "$1" =~ "_complete_"* ]]; then elif [[ "$1" =~ "_complete_".* ]]; then
if [[ "$( type -t $1 )" = function ]]; then if [[ "$( type -t $1 )" = function ]]; then
# target is a command line completer # target is a command line completer
"$@" "$@"
@@ -161,6 +165,12 @@ else
# but there is no defined completion # but there is no defined completion
compgen -f -d -- "${@: -1}" compgen -f -d -- "${@: -1}"
fi fi
elif [[ "$1" =~ .*",".* ]]; then
# Target is comma separated, run individually.
IFS=',' read -ra CMDLIST <<< "$1"
for CMD in "${CMDLIST[@]}"; do
"$0" "$CMD"
done
else else
# no such command # no such command
echo "Command '$1' not recognized" >&2 echo "Command '$1' not recognized" >&2