This is an automated email from the ASF dual-hosted git repository.

aw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yetus.git


The following commit(s) were added to refs/heads/master by this push:
     new 601c145  YETUS-873. Error on unprocessed options/parameters (#53)
601c145 is described below

commit 601c145a024f81aed189c319673b2e1c8a3d9e7e
Author: Allen Wittenauer <a...@apache.org>
AuthorDate: Mon May 13 10:24:20 2019 -0700

    YETUS-873. Error on unprocessed options/parameters (#53)
---
 precommit/src/main/shell/core.d/01-common.sh       | 48 +++++++++++++++
 precommit/src/main/shell/core.d/docker.sh          | 14 +++++
 precommit/src/main/shell/core.d/reaper.sh          |  3 +
 precommit/src/main/shell/docker-cleanup.sh         | 27 ++++++++
 precommit/src/main/shell/personality/hadoop.sh     |  3 +
 precommit/src/main/shell/personality/jmeter.sh     |  1 +
 precommit/src/main/shell/smart-apply-patch.sh      | 35 +++++++++++
 precommit/src/main/shell/test-patch.d/ant.sh       |  1 +
 .../src/main/shell/test-patch.d/asflicense.sh      |  2 +
 precommit/src/main/shell/test-patch.d/author.sh    |  1 +
 precommit/src/main/shell/test-patch.d/autoconf.sh  |  1 +
 .../src/main/shell/test-patch.d/briefreport.sh     |  2 +
 precommit/src/main/shell/test-patch.d/bugzilla.sh  |  1 +
 .../src/main/shell/test-patch.d/checkstyle.sh      |  1 +
 precommit/src/main/shell/test-patch.d/cmake.sh     |  3 +
 precommit/src/main/shell/test-patch.d/github.sh    |  5 ++
 precommit/src/main/shell/test-patch.d/gitlab.sh    |  4 ++
 precommit/src/main/shell/test-patch.d/gradle.sh    |  2 +
 precommit/src/main/shell/test-patch.d/htmlout.sh   |  1 +
 precommit/src/main/shell/test-patch.d/jira.sh      |  5 ++
 precommit/src/main/shell/test-patch.d/jshint.sh    |  1 +
 precommit/src/main/shell/test-patch.d/junit.sh     |  3 +
 precommit/src/main/shell/test-patch.d/make.sh      |  3 +
 precommit/src/main/shell/test-patch.d/maven.sh     |  5 ++
 precommit/src/main/shell/test-patch.d/pathlen.sh   |  1 +
 .../src/main/shell/test-patch.d/perlcritic.sh      |  1 +
 precommit/src/main/shell/test-patch.d/pylint.sh    |  5 ++
 precommit/src/main/shell/test-patch.d/rubocop.sh   |  2 +
 precommit/src/main/shell/test-patch.d/shelldocs.sh |  1 +
 precommit/src/main/shell/test-patch.d/slack.sh     |  1 +
 precommit/src/main/shell/test-patch.d/spotbugs.sh  |  2 +
 precommit/src/main/shell/test-patch.d/tap.sh       |  1 +
 precommit/src/main/shell/test-patch.d/unitveto.sh  |  1 +
 .../src/main/shell/test-patch.d/whitespace.sh      |  2 +
 precommit/src/main/shell/test-patch.sh             | 71 +++++++++++++++++++++-
 35 files changed, 259 insertions(+), 1 deletion(-)

diff --git a/precommit/src/main/shell/core.d/01-common.sh 
b/precommit/src/main/shell/core.d/01-common.sh
index 8ced491..054d1cc 100755
--- a/precommit/src/main/shell/core.d/01-common.sh
+++ b/precommit/src/main/shell/core.d/01-common.sh
@@ -31,6 +31,7 @@ function common_defaults
   EXEC_MODES=()
   #shellcheck disable=SC2034
   EXCLUDE_PATHS=()
+  IGNORE_UNKNOWN_OPTIONS=false
   ROBOTTYPE=""
   LOAD_SYSTEM_PLUGINS=true
   #shellcheck disable=SC2034
@@ -60,6 +61,7 @@ function common_defaults
   ROBOT=false
   #shellcheck disable=SC2034
   SENTINEL=false
+
   #shellcheck disable=SC2034
   TESTTYPES=()
   TESTFORMATS=()
@@ -116,92 +118,122 @@ function common_args
   for i in "$@"; do
     case ${i} in
       --awk-cmd=*)
+        delete_parameter "${i}"
         AWK=${i#*=}
       ;;
       --basedir=*)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         BASEDIR=${i#*=}
       ;;
       --branch=*)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         PATCH_BRANCH=${i#*=}
       ;;
       --branch-default=*)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         PATCH_BRANCH_DEFAULT=${i#*=}
       ;;
       --curl-cmd=*)
+        delete_parameter "${i}"
         CURL=${i#*=}
       ;;
       --debug)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         YETUS_SHELL_SCRIPT_DEBUG=true
       ;;
       --diff-cmd=*)
+        delete_parameter "${i}"
         DIFF=${i#*=}
       ;;
       --file-cmd=*)
+        delete_parameter "${i}"
         FILE=${i#*=}
       ;;
       --git-cmd=*)
+        delete_parameter "${i}"
         GIT=${i#*=}
       ;;
       --git-offline)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         GIT_OFFLINE=true
       ;;
       --git-shallow)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         GIT_SHALLOW=true
       ;;
       --grep-cmd=*)
+        delete_parameter "${i}"
         GREP=${i#*=}
       ;;
+      --ignore-unknown-options=*)
+        delete_parameter "${i}"
+        #shellcheck disable=SC2034
+        IGNORE_UNKNOWN_OPTIONS=${i#*=}
+      ;;
       --help|-help|-h|help|--h|--\?|-\?|\?)
+        delete_parameter "${i}"
         showhelp=true
       ;;
       --list-plugins)
+        delete_parameter "${i}"
         list_plugins
         exit 0
       ;;
       --offline)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         OFFLINE=true
         #shellcheck disable=SC2034
         GIT_OFFLINE=true
       ;;
       --patch-cmd=*)
+        delete_parameter "${i}"
         PATCH=${i#*=}
       ;;
       --patch-dir=*)
+        delete_parameter "${i}"
         PATCH_DIR=${i#*=}
       ;;
       --plugins=*)
+        delete_parameter "${i}"
         ENABLED_PLUGINS=${i#*=}
         ENABLED_PLUGINS=${ENABLED_PLUGINS//,/ }
       ;;
       --project=*)
+        delete_parameter "${i}"
         PROJECT_NAME=${i#*=}
       ;;
       --rsync-cmd=*)
+        delete_parameter "${i}"
         RSYNC=${i#*=}
       ;;
       --skip-system-plugins)
+        delete_parameter "${i}"
         LOAD_SYSTEM_PLUGINS=false
       ;;
       --sed-cmd=*)
+        delete_parameter "${i}"
         SED=${i#*=}
       ;;
       --stat-cmd=*)
+        delete_parameter "${i}"
         # This is used by Docker-in-Docker mode presently, but if other
         # things end up needing it later, it's better to just put it here
         #shellcheck disable=SC2034
         STAT=${i#*=}
       ;;
       --user-plugins=*)
+        delete_parameter "${i}"
         USER_PLUGIN_DIR=${i#*=}
       ;;
       --version)
+        delete_parameter "${i}"
         showversion=true
       ;;
       *)
@@ -809,4 +841,20 @@ function generate_stack
     ((frame++));
   done
   exit 1
+}
+
+## @description  remove entries from paramater tracker
+## @audience     public
+## @stability    stable
+## @replaceable  no
+## @param        parameter
+function delete_parameter
+{
+  declare i=$1
+
+  if [[ "${i}" =~ = ]]; then
+    i=${i%=*}
+  fi
+
+  yetus_del_array_element PARAMETER_TRACKER "${i}"
 }
\ No newline at end of file
diff --git a/precommit/src/main/shell/core.d/docker.sh 
b/precommit/src/main/shell/core.d/docker.sh
index 49d9e60..92515b7 100755
--- a/precommit/src/main/shell/core.d/docker.sh
+++ b/precommit/src/main/shell/core.d/docker.sh
@@ -90,47 +90,61 @@ function docker_parse_args
   for i in "$@"; do
     case ${i} in
       --docker)
+        delete_parameter "${i}"
         DOCKERSUPPORT=true
       ;;
       --docker-bash-debug=*)
+        delete_parameter "${i}"
         YETUS_DOCKER_BASH_DEBUG=${i#*=}
         add_docker_env YETUS_DOCKER_BASH_DEBUG
       ;;
       --docker-cache-from=*)
+        delete_parameter "${i}"
         DOCKER_CACHE_FROM=${i#*=}
       ;;
       --dockercmd=*)
+        delete_parameter "${i}"
         #shellcheck disable=SC2034
         DOCKERCMD=${i#*=}
       ;;
       --dockerdelrep)
+        delete_parameter "${i}"
         DOCKER_DESTRUCTIVE=false
       ;;
       --dockerfile=*)
+        delete_parameter "${i}"
         DOCKERFILE=${i#*=}
       ;;
       --dockerind=*)
+        delete_parameter "${i}"
         DOCKER_IN_DOCKER=${i#*=}
       ;;
       --dockermemlimit=*)
+        delete_parameter "${i}"
         DOCKER_MEMORY=${i#*=}
       ;;
       --dockermode)
+        delete_parameter "${i}"
         DOCKERMODE=true
       ;;
       --docker-platform=*)
+        delete_parameter "${i}"
         DOCKER_PLATFORM=${i#*=}
       ;;
       --dockerprivd=*)
+        delete_parameter "${i}"
         DOCKER_ENABLE_PRIVILEGED=${i#*=}
       ;;
       --docker-socket=*)
+        delete_parameter "${i}"
         DOCKER_SOCKET=${i#*=}
       ;;
       --docker-tag=*)
+        delete_parameter "${i}"
         DOCKER_TAG=${i#*=}
       ;;
       --docker-work-dir=*)
+        delete_parameter "${i}"
         DOCKER_TAG=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/core.d/reaper.sh 
b/precommit/src/main/shell/core.d/reaper.sh
index 5ba03e7..0a3e88a 100755
--- a/precommit/src/main/shell/core.d/reaper.sh
+++ b/precommit/src/main/shell/core.d/reaper.sh
@@ -56,12 +56,15 @@ function reaper_parse_args
   for i in "$@"; do
     case ${i} in
       --reapermode=*)
+        delete_parameter "${i}"
         REAPER_MODE=${i#*=}
       ;;
       --reaperdockeronly=*)
+        delete_parameter "${i}"
         REAPER_DOCKER_ONLY=${i#*=}
       ;;
       --reapernames=*)
+        delete_parameter "${i}"
         yetus_comma_to_array REAPER_NAMES "${i#*=}"
       ;;
     esac
diff --git a/precommit/src/main/shell/docker-cleanup.sh 
b/precommit/src/main/shell/docker-cleanup.sh
index 3173993..968c2e0 100755
--- a/precommit/src/main/shell/docker-cleanup.sh
+++ b/precommit/src/main/shell/docker-cleanup.sh
@@ -134,10 +134,12 @@ function parse_args
   for i in "$@"; do
     case ${i} in
       --robot)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         ROBOT=true
       ;;
       --sentinel)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         ROBOT=true
         # shellcheck disable=SC2034
@@ -161,6 +163,7 @@ function yetus_usage
   echo "${BINNAME} [OPTIONS]"
 
   yetus_add_option "--debug" "If set, then output some extra stuff to stderr"
+  yetus_add_option "--ignore-unknown-options=<bool>" "Continue despite unknown 
options (default: ${IGNORE_UNKNOWN_OPTIONS})"
   yetus_add_option "--robot" "Assume this is an automated run"
   yetus_add_option "--sentinel" "A very aggressive robot (auto: --robot)"
   docker_usage
@@ -188,8 +191,25 @@ function big_console_header
   printf '\n\n'
 }
 
+## @description setup the parameter tracker for param errors
+## @audience    private
+## @stability   evolving
+function setup_parameter_tracker
+{
+  declare i
+
+  for i in "${USER_PARAMS[@]}"; do
+    if [[ "${i}" =~ ^-- ]]; then
+      i=${i%=*}
+      PARAMETER_TRACKER+=("${i}")
+    fi
+  done
+}
+
 trap "cleanup_and_exit 1" HUP INT QUIT TERM
 
+setup_parameter_tracker
+
 import_core
 
 setup_defaults
@@ -200,6 +220,13 @@ import_and_clean
 
 parse_args_plugins "$@"
 
+if [[ "${#PARAMETER_TRACKER}" -gt 0 ]]; then
+  yetus_error "ERROR: Unprocessed flag(s): ${PARAMETER_TRACKER[*]}"
+  if [[ "${IGNORE_UNKNOWN_OPTIONS}" == false ]]; then
+    cleanup_and_exit 1
+  fi
+fi
+
 docker_initialize
 plugins_initialize
 
diff --git a/precommit/src/main/shell/personality/hadoop.sh 
b/precommit/src/main/shell/personality/hadoop.sh
index 6e1a800..49ed9e3 100755
--- a/precommit/src/main/shell/personality/hadoop.sh
+++ b/precommit/src/main/shell/personality/hadoop.sh
@@ -49,12 +49,15 @@ function personality_parse_args
   for i in "$@"; do
     case ${i} in
       --hadoop-isal-prefix=*)
+        delete_parameter "${i}"
         ISAL_HOME=${i#*=}
       ;;
       --hadoop-openssl-prefix=*)
+        delete_parameter "${i}"
         OPENSSL_HOME=${i#*=}
       ;;
       --hadoop-snappy-prefix=*)
+        delete_parameter "${i}"
         SNAPPY_HOME=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/personality/jmeter.sh 
b/precommit/src/main/shell/personality/jmeter.sh
index b4f524c..788a304 100755
--- a/precommit/src/main/shell/personality/jmeter.sh
+++ b/precommit/src/main/shell/personality/jmeter.sh
@@ -52,6 +52,7 @@ function jmeter_parse_args
   for i in "$@"; do
     case ${i} in
       --jmeter-download-jars=*)
+        delete_parameter "${i}"
         JMETER_DOWNLOAD_JARS=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/smart-apply-patch.sh 
b/precommit/src/main/shell/smart-apply-patch.sh
index 20a7e57..2567ee5 100755
--- a/precommit/src/main/shell/smart-apply-patch.sh
+++ b/precommit/src/main/shell/smart-apply-patch.sh
@@ -120,6 +120,7 @@ function yetus_usage
   yetus_add_option "--committer" "Apply patches like a boss."
   yetus_add_option "--debug" "If set, then output some extra stuff to stderr"
   yetus_add_option "--dry-run" "Check for patch viability without applying"
+  yetus_add_option "--ignore-unknown-options=<bool>" "Continue despite unknown 
options (default: ${IGNORE_UNKNOWN_OPTIONS})"
   yetus_add_option "--list-plugins" "List all installed plug-ins and then exit"
   yetus_add_option "--modulelist=<list>" "Specify additional modules to test 
(comma delimited)"
   yetus_add_option "--offline" "Avoid connecting to the Internet"
@@ -193,27 +194,35 @@ function parse_args
   for i in "$@"; do
     case ${i} in
       --build-tool=*)
+        delete_parameter "${i}"
         BUILDTOOL=${i#*=}
       ;;
       --committer)
+        delete_parameter "${i}"
         COMMITMODE=true
       ;;
       --gpg-sign)
+        delete_parameter "${i}"
         GPGSIGN=true
       ;;
       --dry-run)
+        delete_parameter "${i}"
         PATCH_DRYRUNMODE=true
       ;;
       --changedfilesreport=*)
+        delete_parameter "${i}"
         FILEREPORT=${i#*=}
       ;;
       --changedmodulesreport=*)
+        delete_parameter "${i}"
         MODULEREPORT=${i#*=}
       ;;
       --changedunionreport=*)
+        delete_parameter "${i}"
         UNIONREPORT=${i#*=}
       ;;
       --report-only)
+        delete_parameter "${i}"
         REPORTONLY=true
       ;;
       --*)
@@ -383,8 +392,27 @@ function import_core
   done
 }
 
+## @description setup the parameter tracker for param errors
+## @audience    private
+## @stability   evolving
+function setup_parameter_tracker
+{
+  declare i
+
+  for i in "${USER_PARAMS[@]}"; do
+    if [[ "${i}" =~ ^-- ]]; then
+      i=${i%=*}
+      PARAMETER_TRACKER+=("${i}")
+    fi
+  done
+}
+
 trap "cleanup_and_exit 1" HUP INT QUIT TERM
 
+# robots will change USER_PARAMS so must
+# do this before importing other code
+setup_parameter_tracker
+
 import_core
 
 setup_defaults
@@ -400,6 +428,13 @@ TESTFORMATS=()
 
 parse_args_plugins "$@"
 
+if [[ "${#PARAMETER_TRACKER}" -gt 0 ]]; then
+  yetus_error "ERROR: Unprocessed flag(s): ${PARAMETER_TRACKER[*]}"
+  if [[ "${IGNORE_UNKNOWN_OPTIONS}" == false ]]; then
+    cleanup_and_exit 1
+  fi
+fi
+
 plugins_initialize
 
 locate_patch
diff --git a/precommit/src/main/shell/test-patch.d/ant.sh 
b/precommit/src/main/shell/test-patch.d/ant.sh
index d7ab534..bb1ebc3 100755
--- a/precommit/src/main/shell/test-patch.d/ant.sh
+++ b/precommit/src/main/shell/test-patch.d/ant.sh
@@ -39,6 +39,7 @@ function ant_parse_args
   for i in "$@"; do
     case ${i} in
       --ant-cmd=*)
+        delete_parameter "${i}"
         ANT=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/asflicense.sh 
b/precommit/src/main/shell/test-patch.d/asflicense.sh
index 0c22070..bdc41ea 100755
--- a/precommit/src/main/shell/test-patch.d/asflicense.sh
+++ b/precommit/src/main/shell/test-patch.d/asflicense.sh
@@ -31,9 +31,11 @@ function asflicense_parse_args
   for i in "$@"; do
     case ${i} in
       --asflicense-rat-excludes=*)
+        delete_parameter "${i}"
         ASFLICENSE_RAT_EXCLUDES=${i#*=}
       ;;
       --asflicense-rat-jar=*)
+        delete_parameter "${i}"
         ASFLICENSE_RAT_JAR=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/author.sh 
b/precommit/src/main/shell/test-patch.d/author.sh
index 423e31f..dd05fa6 100755
--- a/precommit/src/main/shell/test-patch.d/author.sh
+++ b/precommit/src/main/shell/test-patch.d/author.sh
@@ -36,6 +36,7 @@ function author_parse_args
   for i in "$@"; do
     case ${i} in
       --author-ignore-list=*)
+        delete_parameter "${i}"
         yetus_comma_to_array AUTHOR_IGNORE_LIST "${i#*=}"
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/autoconf.sh 
b/precommit/src/main/shell/test-patch.d/autoconf.sh
index bf9476d..6e73696 100755
--- a/precommit/src/main/shell/test-patch.d/autoconf.sh
+++ b/precommit/src/main/shell/test-patch.d/autoconf.sh
@@ -36,6 +36,7 @@ function autoconf_parse_args
   for i in "$@"; do
     case ${i} in
       --autoconf-configure-flags=*)
+        delete_parameter "${i}"
         AUTOCONF_CONF_FLAGS=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/briefreport.sh 
b/precommit/src/main/shell/test-patch.d/briefreport.sh
index 1780164..1d66618 100755
--- a/precommit/src/main/shell/test-patch.d/briefreport.sh
+++ b/precommit/src/main/shell/test-patch.d/briefreport.sh
@@ -44,9 +44,11 @@ function briefreport_parse_args
   for i in "$@"; do
     case ${i} in
       --brief-report-file=*)
+        delete_parameter "${i}"
         fn=${i#*=}
       ;;
       --brief-report-long=*)
+        delete_parameter "${i}"
         BRIEFOUT_LONGRUNNING=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/bugzilla.sh 
b/precommit/src/main/shell/test-patch.d/bugzilla.sh
index d7f8f17..2e6ebda 100755
--- a/precommit/src/main/shell/test-patch.d/bugzilla.sh
+++ b/precommit/src/main/shell/test-patch.d/bugzilla.sh
@@ -34,6 +34,7 @@ function bugzilla_parse_args
   for i in "$@"; do
     case ${i} in
       --bugzilla-base-url=*)
+        delete_parameter "${i}"
         BUGZILLA_BASE_URL=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/checkstyle.sh 
b/precommit/src/main/shell/test-patch.d/checkstyle.sh
index 59f3b97..bec3efd 100755
--- a/precommit/src/main/shell/test-patch.d/checkstyle.sh
+++ b/precommit/src/main/shell/test-patch.d/checkstyle.sh
@@ -58,6 +58,7 @@ function checkstyle_parse_args
   for i in "$@"; do
     case ${i} in
     --checkstyle-goal=*)
+      delete_parameter "${i}"
       CHECKSTYLE_GOAL=${i#*=}
         case ${CHECKSTYLE_GOAL} in
         check)
diff --git a/precommit/src/main/shell/test-patch.d/cmake.sh 
b/precommit/src/main/shell/test-patch.d/cmake.sh
index a77da38..5b5343d 100755
--- a/precommit/src/main/shell/test-patch.d/cmake.sh
+++ b/precommit/src/main/shell/test-patch.d/cmake.sh
@@ -42,12 +42,15 @@ function cmake_parse_args
   for i in "$@"; do
     case ${i} in
       --cmake-build-dir=*)
+        delete_parameter "${i}"
         CMAKE_BUILD_DIR=${i#*=}
       ;;
       --cmake-cmd=*)
+        delete_parameter "${i}"
         CMAKE=${i#*=}
       ;;
       --cmake-root-build=*)
+        delete_parameter "${i}"
         CMAKE_ROOT_BUILD=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/github.sh 
b/precommit/src/main/shell/test-patch.d/github.sh
index d0446be..5ccb5ae 100755
--- a/precommit/src/main/shell/test-patch.d/github.sh
+++ b/precommit/src/main/shell/test-patch.d/github.sh
@@ -69,18 +69,23 @@ function github_parse_args
   for i in "$@"; do
     case ${i} in
       --github-api-url=*)
+        delete_parameter "${i}"
         GITHUB_API_URL=${i#*=}
       ;;
       --github-base-url=*)
+        delete_parameter "${i}"
         GITHUB_BASE_URL=${i#*=}
       ;;
       --github-repo=*)
+        delete_parameter "${i}"
         GITHUB_REPO=${i#*=}
       ;;
       --github-password=*)
+        delete_parameter "${i}"
         GITHUB_PASSWD=${i#*=}
       ;;
       --github-user=*)
+        delete_parameter "${i}"
         GITHUB_USER=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/gitlab.sh 
b/precommit/src/main/shell/test-patch.d/gitlab.sh
index 595d444..e012895 100755
--- a/precommit/src/main/shell/test-patch.d/gitlab.sh
+++ b/precommit/src/main/shell/test-patch.d/gitlab.sh
@@ -55,15 +55,19 @@ function gitlab_parse_args
   for i in "$@"; do
     case ${i} in
       --gitlab-disable-write)
+        delete_parameter "${i}"
         GITLAB_WRITE_ENABLED=false
       ;;
       --gitlab-token=*)
+        delete_parameter "${i}"
         GITLAB_TOKEN=${i#*=}
       ;;
       --gitlab-repo=*)
+        delete_parameter "${i}"
         GITLAB_REPO=${i#*=}
       ;;
       --gitlab-url=*)
+        delete_parameter "${i}"
         GITLAB_BASE_URL=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/gradle.sh 
b/precommit/src/main/shell/test-patch.d/gradle.sh
index 45142e9..4946360 100755
--- a/precommit/src/main/shell/test-patch.d/gradle.sh
+++ b/precommit/src/main/shell/test-patch.d/gradle.sh
@@ -34,9 +34,11 @@ function gradle_parse_args
   for i in "$@"; do
     case ${i} in
       --gradle-cmd=*)
+        delete_parameter "${i}"
         GRADLE=${i#*=}
       ;;
       --gradlew-cmd=*)
+        delete_parameter "${i}"
         GRADLEW=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/htmlout.sh 
b/precommit/src/main/shell/test-patch.d/htmlout.sh
index 9d34886..9290836 100755
--- a/precommit/src/main/shell/test-patch.d/htmlout.sh
+++ b/precommit/src/main/shell/test-patch.d/htmlout.sh
@@ -38,6 +38,7 @@ function htmlout_parse_args
   for i in "$@"; do
     case ${i} in
       --html-report-file=*)
+        delete_parameter "${i}"
         fn=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/jira.sh 
b/precommit/src/main/shell/test-patch.d/jira.sh
index c13c5f2..d3d7737 100755
--- a/precommit/src/main/shell/test-patch.d/jira.sh
+++ b/precommit/src/main/shell/test-patch.d/jira.sh
@@ -60,18 +60,23 @@ function jira_parse_args
   for i in "$@"; do
     case ${i} in
       --jira-base-url=*)
+        delete_parameter "${i}"
         JIRA_URL=${i#*=}
       ;;
       --jira-issue-re=*)
+        delete_parameter "${i}"
         JIRA_ISSUE_RE=${i#*=}
       ;;
       --jira-password=*)
+        delete_parameter "${i}"
         JIRA_PASSWD=${i#*=}
       ;;
       --jira-status-re=*)
+        delete_parameter "${i}"
         JIRA_STATUS_RE=${i#*=}
       ;;
       --jira-user=*)
+        delete_parameter "${i}"
         JIRA_USER=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/jshint.sh 
b/precommit/src/main/shell/test-patch.d/jshint.sh
index cc4efc5..8578b09 100755
--- a/precommit/src/main/shell/test-patch.d/jshint.sh
+++ b/precommit/src/main/shell/test-patch.d/jshint.sh
@@ -38,6 +38,7 @@ function jshint_parse_args
   for i in "$@"; do
     case ${i} in
       --jshint-cmd=*)
+        delete_parameter "${i}"
         JSHINT=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/junit.sh 
b/precommit/src/main/shell/test-patch.d/junit.sh
index c1a0c55..3d44883 100755
--- a/precommit/src/main/shell/test-patch.d/junit.sh
+++ b/precommit/src/main/shell/test-patch.d/junit.sh
@@ -39,12 +39,15 @@ function junit_parse_args
   for i in "$@"; do
     case ${i} in
       --junit-test-output=*)
+        delete_parameter "${i}"
         JUNIT_TEST_OUTPUT_DIR=${i#*=}
       ;;
       --junit-test-prefix=*)
+        delete_parameter "${i}"
         JUNIT_TEST_PREFIX=${i#*=}
       ;;
       --junit-results-xml=*)
+        delete_parameter "${i}"
         JUNIT_RESULTS_XML=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/make.sh 
b/precommit/src/main/shell/test-patch.d/make.sh
index 7093029..35bbb1a 100755
--- a/precommit/src/main/shell/test-patch.d/make.sh
+++ b/precommit/src/main/shell/test-patch.d/make.sh
@@ -58,12 +58,15 @@ function make_parse_args
   for i in "$@"; do
     case ${i} in
       --make-cmd=*)
+        delete_parameter "${i}"
         MAKE=${i#*=}
       ;;
       --make-file=*)
+        delete_parameter "${i}"
         MAKEFILE=${i#*=}
       ;;
       --make-use-git-clean)
+        delete_parameter "${i}"
         MAKE_GITCLEAN=true
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/maven.sh 
b/precommit/src/main/shell/test-patch.d/maven.sh
index 53d3417..09690ee 100755
--- a/precommit/src/main/shell/test-patch.d/maven.sh
+++ b/precommit/src/main/shell/test-patch.d/maven.sh
@@ -93,18 +93,23 @@ function maven_parse_args
   for i in "$@"; do
     case ${i} in
       --mvn-cmd=*)
+        delete_parameter "${i}"
         MAVEN=${i#*=}
       ;;
       --mvn-custom-repos)
+        delete_parameter "${i}"
         MAVEN_CUSTOM_REPOS=true
       ;;
       --mvn-custom-repos-dir=*)
+        delete_parameter "${i}"
         MAVEN_CUSTOM_REPOS_DIR=${i#*=}
       ;;
       --mvn-deps-order=*)
+        delete_parameter "${i}"
         MAVEN_DEPENDENCY_ORDER=${i#*=}
       ;;
       --mvn-settings=*)
+        delete_parameter "${i}"
         MAVEN_SETTINGS=${i#*=}
         if [[ -f ${MAVEN_SETTINGS} ]]; then
           MAVEN_ARGS=("${MAVEN_ARGS[@]}" "--settings=${MAVEN_SETTINGS}")
diff --git a/precommit/src/main/shell/test-patch.d/pathlen.sh 
b/precommit/src/main/shell/test-patch.d/pathlen.sh
index a013adb..f056003 100755
--- a/precommit/src/main/shell/test-patch.d/pathlen.sh
+++ b/precommit/src/main/shell/test-patch.d/pathlen.sh
@@ -39,6 +39,7 @@ function pathlen_parse_args
   for i in "$@"; do
     case ${i} in
       --pathlen-size=*)
+        delete_parameter "${i}"
         PATHLEN_SIZE="${i#*=}"
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/perlcritic.sh 
b/precommit/src/main/shell/test-patch.d/perlcritic.sh
index 5c09a05..8290378 100755
--- a/precommit/src/main/shell/test-patch.d/perlcritic.sh
+++ b/precommit/src/main/shell/test-patch.d/perlcritic.sh
@@ -34,6 +34,7 @@ function perlcritic_parse_args
   for i in "$@"; do
     case ${i} in
     --perlcritic=*)
+      delete_parameter "${i}"
       PERLCRITIC=${i#*=}
     ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/pylint.sh 
b/precommit/src/main/shell/test-patch.d/pylint.sh
index 0f0e30b..d0a83bf 100755
--- a/precommit/src/main/shell/test-patch.d/pylint.sh
+++ b/precommit/src/main/shell/test-patch.d/pylint.sh
@@ -42,18 +42,23 @@ function pylint_parse_args
   for i in "$@"; do
     case ${i} in
     --pylint=*)
+      delete_parameter "${i}"
       PYLINT=${i#*=}
     ;;
     --pylint-pip-cmd=*)
+      delete_parameter "${i}"
       PYLINT_PIP_CMD=${i#*=}
     ;;
     --pylint-rcfile=*)
+      delete_parameter "${i}"
       PYLINT_RCFILE=${i#*=}
     ;;
     --pylint-requirements=*)
+      delete_parameter "${i}"
       PYLINT_REQUIREMENTS=${i#*=}
     ;;
     --pylint-use-user=*)
+      delete_parameter "${i}"
       PYLINT_PIP_USER=${i#*=}
     ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/rubocop.sh 
b/precommit/src/main/shell/test-patch.d/rubocop.sh
index 84a9fe0..143d038 100755
--- a/precommit/src/main/shell/test-patch.d/rubocop.sh
+++ b/precommit/src/main/shell/test-patch.d/rubocop.sh
@@ -35,9 +35,11 @@ function rubocop_parse_args
   for i in "$@"; do
     case ${i} in
     --rubocop=*)
+      delete_parameter "${i}"
       RUBOCOP=${i#*=}
     ;;
     --rubocop-config=*)
+      delete_parameter "${i}"
       RUBOCOP_CONFIG=${i#*=}
     ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/shelldocs.sh 
b/precommit/src/main/shell/test-patch.d/shelldocs.sh
index 0d47dc4..082e85b 100755
--- a/precommit/src/main/shell/test-patch.d/shelldocs.sh
+++ b/precommit/src/main/shell/test-patch.d/shelldocs.sh
@@ -48,6 +48,7 @@ function shelldocs_parse_args
   for i in "$@"; do
     case ${i} in
     --shelldocs=*)
+      delete_parameter "${i}"
       SHELLDOCS=${i#*=}
     ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/slack.sh 
b/precommit/src/main/shell/test-patch.d/slack.sh
index d63255c..15ba393 100755
--- a/precommit/src/main/shell/test-patch.d/slack.sh
+++ b/precommit/src/main/shell/test-patch.d/slack.sh
@@ -36,6 +36,7 @@ function slack_parse_args
   for i in "$@"; do
     case ${i} in
       --slack-webhook-url=*)
+        delete_parameter "${i}"
         SLACK_WEBHOOK_URL=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/spotbugs.sh 
b/precommit/src/main/shell/test-patch.d/spotbugs.sh
index e43bab4..45a9ac9 100755
--- a/precommit/src/main/shell/test-patch.d/spotbugs.sh
+++ b/precommit/src/main/shell/test-patch.d/spotbugs.sh
@@ -56,9 +56,11 @@ function spotbugs_parse_args
   for i in "$@"; do
     case ${i} in
     --spotbugs-home=*)
+      delete_parameter "${i}"
       SPOTBUGS_HOME=${i#*=}
     ;;
     --spotbugs-strict-precheck)
+      delete_parameter "${i}"
       SPOTBUGS_WARNINGS_FAIL_PRECHECK=true
     ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/tap.sh 
b/precommit/src/main/shell/test-patch.d/tap.sh
index 08d5242..fa2ec9f 100755
--- a/precommit/src/main/shell/test-patch.d/tap.sh
+++ b/precommit/src/main/shell/test-patch.d/tap.sh
@@ -28,6 +28,7 @@ function tap_parse_args
   for i in "$@"; do
     case ${i} in
       --tap-log-dir=*)
+        delete_parameter "${i}"
         TAP_LOG_DIR=${i#=*}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/unitveto.sh 
b/precommit/src/main/shell/test-patch.d/unitveto.sh
index fd88ec5..ab758a3 100755
--- a/precommit/src/main/shell/test-patch.d/unitveto.sh
+++ b/precommit/src/main/shell/test-patch.d/unitveto.sh
@@ -43,6 +43,7 @@ function unitveto_parse_args
   for i in "$@"; do
     case ${i} in
       --unitveto-re=*)
+        delete_parameter "${i}"
         UNITVETO_RE=${i#*=}
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.d/whitespace.sh 
b/precommit/src/main/shell/test-patch.d/whitespace.sh
index df08a37..6d3b682 100755
--- a/precommit/src/main/shell/test-patch.d/whitespace.sh
+++ b/precommit/src/main/shell/test-patch.d/whitespace.sh
@@ -42,9 +42,11 @@ function whitespace_parse_args
   for i in "$@"; do
     case ${i} in
       --whitespace-eol-ignore-list=*)
+        delete_parameter "${i}"
         WHITESPACE_EOL_IGNORE_LIST="${i#*=}"
       ;;
       --whitespace-tabs-ignore-list=*)
+        delete_parameter "${i}"
         WHITESPACE_TABS_IGNORE_LIST="${i#*=}"
       ;;
     esac
diff --git a/precommit/src/main/shell/test-patch.sh 
b/precommit/src/main/shell/test-patch.sh
index 4daacf5..27d5f98 100755
--- a/precommit/src/main/shell/test-patch.sh
+++ b/precommit/src/main/shell/test-patch.sh
@@ -29,6 +29,7 @@ BINNAME=${this##*/}
 BINNAME=${BINNAME%.sh}
 STARTINGDIR=$(pwd)
 USER_PARAMS=("$@")
+
 #shellcheck disable=SC2034
 QATESTMODE=false
 
@@ -686,6 +687,7 @@ function yetus_usage
   yetus_add_option "--excludes=<file>" "File of regexs to keep project files 
out of the set of changes passed to plugins."
   yetus_add_option "--git-offline" "Do not fail if git cannot do certain 
remote operations"
   yetus_add_option "--git-shallow" "Repo does not know about other branches or 
tags"
+  yetus_add_option "--ignore-unknown-options=<bool>" "Continue despite unknown 
options (default: ${IGNORE_UNKNOWN_OPTIONS})"
   yetus_add_option "--java-home=<path>" "Set JAVA_HOME (In Docker mode, this 
should be local to the image)"
   yetus_add_option "--linecomments=<bug>" "Only write line comments to this 
comma delimited list (default: same as --bugcomments)"
   yetus_add_option "--list-plugins" "List all installed plug-ins and then exit"
@@ -783,59 +785,76 @@ function parse_args
   for i in "$@"; do
     case ${i} in
       --archive-list=*)
+        delete_parameter "${i}"
         yetus_comma_to_array ARCHIVE_LIST "${i#*=}"
         yetus_debug "Set to archive: ${ARCHIVE_LIST[*]}"
       ;;
       --bugcomments=*)
+        delete_parameter "${i}"
         BUGCOMMENTS=${i#*=}
         BUGCOMMENTS=${BUGCOMMENTS//,/ }
       ;;
       --build-native=*)
+        delete_parameter "${i}"
         BUILD_NATIVE=${i#*=}
       ;;
       --build-tool=*)
+        delete_parameter "${i}"
         BUILDTOOL=${i#*=}
       ;;
       --build-url=*)
+        delete_parameter "${i}"
         BUILD_URL=${i#*=}
       ;;
       --build-url-artifacts=*)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         BUILD_URL_ARTIFACTS=${i#*=}
       ;;
       --build-url-console=*)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         BUILD_URL_CONSOLE=${i#*=}
       ;;
       --console-report-file=*)
+        delete_parameter "${i}"
         CONSOLE_REPORT_FILE=${i#*=}
       ;;
       --console-urls)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         CONSOLE_USE_BUILD_URL=true
       ;;
       --contrib-guide=*)
+        delete_parameter "${i}"
         PATCH_NAMING_RULE=${i#*=}
       ;;
       --continuous-improvement=*)
+        delete_parameter "${i}"
         CONTINUOUS_IMPROVEMENT=${i#*=}
       ;;
       --dirty-workspace)
+        delete_parameter "${i}"
         DIRTY_WORKSPACE=true
       ;;
       --excludes=*)
+        delete_parameter "${i}"
         EXCLUDE_PATHS_FILE="${i#*=}"
       ;;
       --instance=*)
+        delete_parameter "${i}"
         INSTANCE=${i#*=}
       ;;
       --empty-patch)
+        delete_parameter "${i}"
         BUILDMODE=full
       ;;
       --java-home=*)
+        delete_parameter "${i}"
         JAVA_HOME=${i#*=}
       ;;
       --linecomments=*)
+        delete_parameter "${i}"
         BUGLINECOMMENTS=${i#*=}
         BUGLINECOMMENTS=${BUGLINECOMMENTS//,/ }
         if [[ -z "${BUGLINECOMMENTS}" ]]; then
@@ -843,76 +862,97 @@ function parse_args
         fi
       ;;
       --modulelist=*)
+        delete_parameter "${i}"
         yetus_comma_to_array USER_MODULE_LIST "${i#*=}"
         yetus_debug "Manually forcing modules ${USER_MODULE_LIST[*]}"
       ;;
       --multijdkdirs=*)
+        delete_parameter "${i}"
         yetus_comma_to_array JDK_DIR_LIST "${i#*=}"
         yetus_debug "Multi-JDK mode activated with ${JDK_DIR_LIST[*]}"
         yetus_add_array_element EXEC_MODES MultiJDK
       ;;
       --multijdktests=*)
+        delete_parameter "${i}"
         yetus_comma_to_array JDK_TEST_LIST "${i#*=}"
         yetus_debug "MultiJDK test list=${JDK_TEST_LIST[*]}"
       ;;
       --mv-patch-dir)
+        delete_parameter "${i}"
         RELOCATE_PATCH_DIR=true;
       ;;
       --personality=*)
+        delete_parameter "${i}"
         PERSONALITY=${i#*=}
       ;;
       --proclimit=*)
+        delete_parameter "${i}"
         PROC_LIMIT=${i#*=}
       ;;
       --reexec)
+        delete_parameter "${i}"
         REEXECED=true
       ;;
       --resetrepo)
+        delete_parameter "${i}"
         RESETREPO=true
       ;;
       --robot)
+        delete_parameter "${i}"
         ROBOT=true
       ;;
       --run-tests)
+        delete_parameter "${i}"
         RUN_TESTS=true
       ;;
       --sentinel)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         SENTINEL=true
         yetus_add_array_element EXEC_MODES Sentinel
       ;;
       --skip-dirs=*)
+        delete_parameter "${i}"
         MODULE_SKIPDIRS=${i#*=}
         MODULE_SKIPDIRS=${MODULE_SKIPDIRS//,/ }
         yetus_debug "Setting skipdirs to ${MODULE_SKIPDIRS}"
       ;;
       --summarize=*)
+        delete_parameter "${i}"
         ALLOWSUMMARIES=${i#*=}
       ;;
       --test-parallel=*)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         TEST_PARALLEL=${i#*=}
       ;;
       --test-threads=*)
+        delete_parameter "${i}"
         # shellcheck disable=SC2034
         TEST_THREADS=${i#*=}
       ;;
       --unit-test-filter-file=*)
+        delete_parameter "${i}"
         UNIT_TEST_FILTER_FILE=${i#*=}
       ;;
       --tests-filter=*)
+        delete_parameter "${i}"
         yetus_comma_to_array VOTE_FILTER "${i#*=}"
       ;;
       --tpglobaltimer=*)
+        delete_parameter "${i}"
         GLOBALTIMER=${i#*=}
       ;;
       --tpinstance=*)
+        delete_parameter "${i}"
         INSTANCE=${i#*=}
       ;;
       --tpperson=*)
+        delete_parameter "${i}"
         REEXECPERSONALITY=${i#*=}
       ;;
       --tpreexectimer=*)
+        delete_parameter "${i}"
         REEXECLAUNCHTIMER=${i#*=}
       ;;
       --*)
@@ -3059,7 +3099,6 @@ function initialize
     BUGCOMMENTS="${BUGCOMMENTS} console"
   fi
 
-
   if [[ "${BUGLINECOMMENTS}" == " " ]]; then
     BUGLINECOMMENTS=""
   else
@@ -3107,6 +3146,17 @@ function initialize
 
   check_reexec
 
+  if [[ "${#PARAMETER_TRACKER}" -gt 0 ]]; then
+    yetus_error "ERROR: Unprocessed flag(s): ${PARAMETER_TRACKER[*]}"
+    if [[ "${IGNORE_UNKNOWN_OPTIONS}" == true ]]; then
+      add_vote_table "-0" yetus "Unprocessed flag(s): ${PARAMETER_TRACKER[*]}"
+    else
+      add_vote_table -1 yetus "Unprocessed flag(s): ${PARAMETER_TRACKER[*]}"
+      bugsystem_finalreport 1
+      cleanup_and_exit 1
+    fi
+  fi
+
   determine_needed_tests
 
   prepopulate_footer
@@ -3153,10 +3203,29 @@ function import_core
   done
 }
 
+## @description setup the parameter tracker for param errors
+## @audience    private
+## @stability   evolving
+function setup_parameter_tracker
+{
+  declare i
+
+  for i in "${USER_PARAMS[@]}"; do
+    if [[ "${i}" =~ ^-- ]]; then
+      i=${i%=*}
+      PARAMETER_TRACKER+=("${i}")
+    fi
+  done
+}
+
 ###############################################################################
 ###############################################################################
 ###############################################################################
 
+# robots will change USER_PARAMS so must
+# do this before importing other code
+setup_parameter_tracker
+
 import_core
 
 if [[ "${BINNAME}" =~ qbt ]]; then

Reply via email to