diff options
author | Bryan Drewery <bryan@shatow.net> | 2022-11-04 18:17:26 +0300 |
---|---|---|
committer | Bryan Drewery <bryan@shatow.net> | 2022-11-05 00:43:09 +0300 |
commit | ad6bd98a65af67e32315a00efbe1e51614f2ad3a (patch) | |
tree | a1ba58dcfe2c0bf418bbbd958e42e24810f04b18 | |
parent | b3dd3cd9a723ff1b22a22fb6c981780f3c5d372e (diff) |
options: Error on mutually-exclusive command flags
-rwxr-xr-x | src/share/poudriere/options.sh | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/share/poudriere/options.sh b/src/share/poudriere/options.sh index 78bc63b7..17548d0e 100755 --- a/src/share/poudriere/options.sh +++ b/src/share/poudriere/options.sh @@ -57,7 +57,7 @@ PTNAME=default SETNAME="" PTNAME_TMP="" DO_RECURSE=y -COMMAND=config-conditional +DEFAULT_COMMAND=config-conditional RECURSE_COMMAND=config-recursive OFLAG=0 @@ -72,10 +72,20 @@ while getopts "a:cCj:f:o:p:nrsz:" FLAG; do [ "${ARCH%.*}" = "${ARCH#*.}" ] && ARCH="${ARCH#*.}" ;; c) + if [ -n "${COMMAND}" ]; then + msg_error "-${FLAG} is mutually exclusive with flag: -${COMMAND_FLAG}" + usage + fi COMMAND=config + COMMAND_FLAG="${FLAG}" ;; C) + if [ -n "${COMMAND}" ]; then + msg_error "-${FLAG} is mutually exclusive with flag: -${COMMAND_FLAG}" + usage + fi COMMAND=config-conditional + COMMAND_FLAG="${FLAG}" ;; j) jail_exists ${OPTARG} || err 1 "No such jail: ${OPTARG}" @@ -102,11 +112,21 @@ while getopts "a:cCj:f:o:p:nrsz:" FLAG; do DO_RECURSE= ;; r) + if [ -n "${COMMAND}" ]; then + msg_error "-${FLAG} is mutually exclusive with flag: -${COMMAND_FLAG}" + usage + fi COMMAND=rmconfig + COMMAND_FLAG="${FLAG}" RECURSE_COMMAND=rmconfig-recursive ;; s) + if [ -n "${COMMAND}" ]; then + msg_error "-${FLAG} is mutually exclusive with flag: -${COMMAND_FLAG}" + usage + fi COMMAND=showconfig + COMMAND_FLAG="${FLAG}" RECURSE_COMMAND=showconfig-recursive ;; z) @@ -122,6 +142,8 @@ done shift $((OPTIND-1)) post_getopts +: ${COMMAND:=${DEFAULT_COMMAND}} + # checking jail and architecture consistency if [ -n "${JAILNAME}" -a -n "${ARCH}" ]; then _jget _arch "${JAILNAME}" arch || err 1 "Missing arch metadata for jail" |