summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2024-06-03 00:17:36 +0100
committerLeah Rowe <leah@libreboot.org>2024-06-03 00:17:36 +0100
commit00653aab1ea6d1bc227227da9e2195432f8fe52e (patch)
treec5af83eab50fdc1186597b2b8f3974c4f6dd456b
parentafac9a06d2c6f18c44066321674129383e85b2ba (diff)
better help text on invalid commands
adding help again is a bad idea. code should never document itself; that's what documentation is for. so, make the code do a better job telling the user where to find documentation. Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-xbuild12
-rwxr-xr-xinclude/lib.sh9
-rwxr-xr-xscript/roms2
-rwxr-xr-xscript/trees2
4 files changed, 17 insertions, 8 deletions
diff --git a/build b/build
index 44d99507..10982423 100755
--- a/build
+++ b/build
@@ -25,7 +25,7 @@ linkname="${linkpath##*/}"
main()
{
x_ id -u 1>/dev/null 2>/dev/null
- [ $# -lt 1 ] && $err "Check $projectname documentation for help."
+ [ $# -lt 1 ] && badcmd
spath="script/$1"
[ "$1" = "dependencies" ] && x_ install_packages $@ && return 0
@@ -43,7 +43,7 @@ main()
inject) shift 1; vendor_inject $@ ;;
download) shift 1; vendor_download $@ ;;
*)
- [ -f "$spath" ] || $err "Bad command. Check docs."
+ [ -f "$spath" ] || badcmd
shift 1; "$spath" $@ || $err "excmd: $spath $@" ;;
esac
set -u -e # some commands disable them. turn them on!
@@ -51,8 +51,8 @@ main()
install_packages()
{
- [ $# -lt 2 ] && $err "Bad command. Check docs."
- [ -f "config/dependencies/$2" ] || $err "Unsupported target"
+ [ $# -lt 2 ] && badcmd "fewer than two arguments"
+ [ -f "config/dependencies/$2" ] || badcmd "unsupported target"
. "config/dependencies/$2"
@@ -79,11 +79,11 @@ mkrelease()
vdir="release"
while getopts d:m: option; do
- [ -z "$OPTARG" ] && $err "Empty argument not allowed"
+ [ -z "$OPTARG" ] && badcmd "empty argument not allowed"
case "$option" in
d) vdir="$OPTARG" ;;
m) mode="$OPTARG" ;;
- *) $err "Invalid option" ;;
+ *) badcmd "invalid option '-$option'" ;;
esac
done
diff --git a/include/lib.sh b/include/lib.sh
index 1b0f07c1..8d4b7825 100755
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -15,6 +15,15 @@ tmpgit="$PWD/tmp/gitclone"
grubdata="config/data/grub"
err="err_"
+badcmd()
+{
+ errmsg="no context given"
+ [ $# -gt 0 ] && errmsg="$1"
+
+ dstr="Check $projectname docs via $projectsite"
+ [ -d "docs" ] && dstr="$dstr (local docs available via docs/)"
+ $err "Bad command ($errmsg). $dstr"
+}
err_()
{
printf "ERROR %s: %s\n" "$0" "$1" 1>&2
diff --git a/script/roms b/script/roms
index 7e5e1be6..ee48bc42 100755
--- a/script/roms
+++ b/script/roms
@@ -69,7 +69,7 @@ main()
handle_serprog()
{
- [ -z "${1+x}" ] && $err "bad command. Check $projectname docs."
+ [ -z "${1+x}" ] && badcmd
[ "$1" != "rp2040" ] && [ "$1" != "stm32" ] && $err "bad command"
if [ "$1" = "rp2040" ]; then
serprog_boards_dir="$picosdk/src/boards/include/boards"
diff --git a/script/trees b/script/trees
index 1075b220..e22467f7 100755
--- a/script/trees
+++ b/script/trees
@@ -27,7 +27,7 @@ main()
-s) mode="savedefconfig" ;;
-l) mode="olddefconfig" ;;
-n) mode="nconfig" ;;
- *) $err "Invalid option" ;;
+ *) badcmd "invalid option '-$option'" ;;
esac
shift; project="${OPTARG#src/}"; shift
done