mk: generalised dispatch loop

with this new function, i can turn commands on and
off by virtue of config. for now, behaviour is
unchanged, but this new design means i will be
able to disable certain commands in child processes

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-09-10 13:43:47 +01:00
parent afdf8c7733
commit e973584123
2 changed files with 34 additions and 15 deletions
+30
View File
@@ -27,6 +27,11 @@ update_xbmkver()
err "can't write '$versiondate'" "update_xbmkver" "$@"; :
}
version()
{
printf "%s\nWebsite: %s\n" "$relname" "$projectsite"
}
xbmk_sanitize_version()
{
if [ -z "$version" ]; then
@@ -222,6 +227,31 @@ x_()
fi
}
xeq()
{
if [ $# -lt 2 ]; then
err "no args" xeq
fi
xbcmd="$1"
chk="$2"
shift 2
case "$chk" in
-*)
return 1
;;
*)
for eq in "$@"; do
if [ "$chk" = "$eq" ]; then
return 0
fi
done
;;
esac
err "bad command" xeq "$xbcmd" "$chk" "$@"
}
xchk()
{
if [ $# -lt 3 ]; then
+4 -15
View File
@@ -35,26 +35,15 @@ main()
cmd=""
if [ $# -gt 0 ]; then
cmd="$1"
shift 1
fi
case "$cmd" in
version)
printf "%s\nWebsite: %s\n" "$relname" "$projectsite"
;;
release|download|inject|prep_mr_import)
$cmd "$@"
;;
-*)
if ! xeq main "$cmd" \
version release download inject prep_mr_import; then
return 0
;;
*)
err "bad command" main "$@"
;;
esac
fi
# some commands disable them. turn them back on!
$cmd "$@"
set -u -e
return 1