Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/poudriere.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Drewery <bryan@shatow.net>2022-11-04 18:17:26 +0300
committerBryan Drewery <bryan@shatow.net>2022-11-05 00:43:09 +0300
commitad6bd98a65af67e32315a00efbe1e51614f2ad3a (patch)
treea1ba58dcfe2c0bf418bbbd958e42e24810f04b18
parentb3dd3cd9a723ff1b22a22fb6c981780f3c5d372e (diff)
options: Error on mutually-exclusive command flags
-rwxr-xr-xsrc/share/poudriere/options.sh24
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"