YETUS-1072. Rework personalities and some plug-in handling (#207)

diff --git a/precommit/src/main/shell/personality/yetus.sh b/.yetus/personality.sh
similarity index 100%
rename from precommit/src/main/shell/personality/yetus.sh
rename to .yetus/personality.sh
diff --git a/asf-site-src/config.rb b/asf-site-src/config.rb
index 033e532..543f1de 100644
--- a/asf-site-src/config.rb
+++ b/asf-site-src/config.rb
@@ -151,7 +151,7 @@
   # primary API
   shelldocs("#{apidocs_dir}/test-patch.html.md", ["#{source_dir}/test-patch.sh"])
   # plugins API
-  shelldocs("#{apidocs_dir}/plugins.html.md", Dir.glob("#{source_dir}/test-patch.d/*.sh"))
+  shelldocs("#{apidocs_dir}/plugins.html.md", Dir.glob("#{source_dir}/plugins.d/*.sh"))
 end
 
 # Add in apidocs rendered by other parts of the repo
diff --git a/asf-site-src/source/documentation/in-progress/precommit/advanced.html.md b/asf-site-src/source/documentation/in-progress/precommit/advanced.html.md
index cbd6a3e..240d865 100644
--- a/asf-site-src/source/documentation/in-progress/precommit/advanced.html.md
+++ b/asf-site-src/source/documentation/in-progress/precommit/advanced.html.md
@@ -27,8 +27,8 @@
   * [Plug-in Importation](#plug-in-importation)
   * [Test Plug-ins](#test-plug-ins)
 * [Personalities](#personalities)
-  * [Configuring for Other Projects](#configuring-for-other-projects)
-  * [Global Definitions](#global-definitions)
+  * [Global Settings](#global-settings)
+  * [Custom Argument Parsing](#custom-argument-parsing)
   * [Test Determination](#test-determination)
   * [Module & Profile Determination](#module--profile-determination)
   * [Enabling Plug-ins](#enabling-plug-ins)
@@ -46,7 +46,7 @@
 
 # Plug-ins
 
-test-patch allows one to add to its basic feature set via plug-ins.  There is a directory called test-patch.d inside the directory where test-patch.sh lives.  Inside this directory one may place some bash shell fragments that, if setup with proper functions, will allow for test-patch to call it as necessary.  Different plug-ins have specific functions for that particular functionality.  In this document, the common functions available to all/most plug-ins are covered.  Test plugins are covered below. See other documentation for pertinent information for the other plug-in types.
+test-patch allows one to add to its basic feature set via plug-ins.  There is a directory called plugins.d inside the directory where test-patch.sh lives.  Inside this directory one may place some bash shell fragments that, if setup with proper functions, will allow for test-patch to call it as necessary.  Different plug-ins have specific functions for that particular functionality.  In this document, the common functions available to all/most plug-ins are covered.  Test plugins are covered below. See other documentation for pertinent information for the other plug-in types.
 
 ## Common Plug-in Functions
 
@@ -106,7 +106,7 @@
 
 * personality contains bundled personalities for various projects.  These will be imported individually based upon either a project name or if specifically identified with the `--personality` flag.
 
-* test-patch.d contains all of the optional, bundled plug-ins.  These are imported last and in shell collated order.
+* plugins.d contains all of the optional, bundled plug-ins.  These are imported last and in shell collated order.
 
 If the `--skip-system-plugins` flag is passed, then only core.d is imported.
 
@@ -140,26 +140,27 @@
 
 # Personalities
 
-## Configuring for Other Projects
-
 It is impossible for any general framework to be predictive about what types of special rules any given project may have, especially when it comes to ordering and Maven profiles.  In order to direct test-patch to do the correct action, a project `personality` should be added that enacts these custom rules.
 
-A personality consists of two functions. One that determines which test types to run and another that allows a project to dictate ordering rules, flags, and profiles on a per-module, per-test run.
+A personality consists of one or more functions.
 
 There can be only **one** of each personality function defined.
 
-## Global Definitions
+## Global Settings
 
 Globals for personalities should be defined in the `personality_globals` function.  This function is called *after* the other plug-ins have been imported.  This allows one to configure any settings for plug-ins that have been imported safely:
 
 ```bash
 function personality_globals
 {
-  PATCH_BRANCH_DEFAULT=main
   GITHUB_REPO="apache/yetus"
+  PATCH_BRANCH_DEFAULT=main
+  PROJECT_NAME="yetus"
 }
 ```
 
+## Custom Argument Parsing
+
 Additionally, a personality may require some outside help from the user.  The `personality_parse_args`
 function is called almost immediately after the personality is loaded and plug-ins parse arguments.
 
@@ -170,7 +171,7 @@
 }
 ```
 
-It is important to note that this function is called AFTER personality_globals.
+It is important to note that this function is called AFTER `personality_globals`.
 
 ## Test Determination
 
@@ -194,6 +195,9 @@
 
 The `add_test` function is used to activate the standard tests.  Additional plug-ins (such as checkstyle), will get queried on their own.
 
+This function may also be defined as `PROJECT_NAME_personality_file_tests`, where `PROJECT_NAME` matches the value passed via `--project`
+or autodetermined by various means.  The `PROJECT_NAME` version takes precedence over the generic version.
+
 ## Module & Profile Determination
 
 Once the tests are determined, it is now time to pick which [modules](../glossary#genericoutside-definitions) should get used.  That's the job of the `personality_modules` function.
@@ -243,6 +247,9 @@
 
 This function will tell test-patch that when the javadoc test is being run, do the documentation build at the base of the source repository and make sure the -DskipTests flag is passed to our build tool.
 
+This function may also be defined as `PROJECT_NAME_personality_modules`, where `PROJECT_NAME` matches the value passed via `--project`
+or autodetermined by various means.  The `PROJECT_NAME` version takes precedence over the generic version.
+
 ## Enabling Plug-ins
 
 Personalities can set the base list of plug-ins to enable and disable for their project via the `personality_plugins` function. Just call it with the same pattern as the `--plugins` command line option:
diff --git a/asf-site-src/source/documentation/in-progress/precommit/testformats.html.md b/asf-site-src/source/documentation/in-progress/precommit/testformats.html.md
index 6994960..5b6a9c9 100644
--- a/asf-site-src/source/documentation/in-progress/precommit/testformats.html.md
+++ b/asf-site-src/source/documentation/in-progress/precommit/testformats.html.md
@@ -45,4 +45,4 @@
 
 # Example
 
-For an example of how to write a test-format plugin, you can look at [junit plugin](https://github.com/apache/yetus/blob/main/precommit/test-patch.d/junit.sh) bundled in Apache Yetus.
+For an example of how to write a test-format plugin, you can look at [junit plugin](https://github.com/apache/yetus/blob/main/precommit/plugins.d/junit.sh) bundled in Apache Yetus.
diff --git a/precommit/src/main/shell/core.d/01-common.sh b/precommit/src/main/shell/core.d/01-common.sh
index d8f2c87..9f55415 100755
--- a/precommit/src/main/shell/core.d/01-common.sh
+++ b/precommit/src/main/shell/core.d/01-common.sh
@@ -210,6 +210,7 @@
       ;;
       --project=*)
         delete_parameter "${i}"
+        #shellcheck disable=SC2034
         PROJECT_NAME=${i#*=}
       ;;
       --report-unknown-options=*)
@@ -283,6 +284,21 @@
     yetus_error "ERROR: ${GIT} v1.7.3 or higher is required (found ${version})."
     exit 1
   fi
+
+  # we need absolute dir for ${BASEDIR}
+  if ! cd "${STARTINGDIR}"; then
+    yetus_error "ERROR: Launch directory disappeared?!?"
+    cleanup_and_exit 1
+  fi
+  BASEDIR=$(yetus_abs "${BASEDIR}")
+
+  if [[ ! -d "${BASEDIR}" ]]; then
+    yetus_error "ERROR: --basedir is not a directory."
+    cleanup_and_exit 1
+  fi
+
+  PERSONALITY="${BASEDIR}/.yetus/personality.sh"
+  USER_PLUGIN_DIR="${BASEDIR}/.yetus/plugins.d"
 }
 
 ## @description  List all installed plug-ins, regardless of whether
@@ -544,7 +560,7 @@
   yetus_del_array_element BUILDTOOLS "${1}"
 }
 
-## @description  Import content from test-patch.d and optionally
+## @description  Import content from plugins.d and optionally
 ## @description  from user provided plugin directory
 ## @audience     private
 ## @stability    evolving
@@ -555,37 +571,23 @@
   local plugin
   local files=()
 
-  #BUG: this will break horribly if there are spaces in the paths. :(
+  #BUG: this will break horribly if there are spaces in the file names. :(
 
   if [[ ${LOAD_SYSTEM_PLUGINS} == "true" ]]; then
-    if [[ -d "${BINDIR}/test-patch.d" ]]; then
-      #shellcheck disable=SC2206
-      files=(${BINDIR}/test-patch.d/*.sh)
+    if [[ -d "${BINDIR}/plugins.d" ]]; then
+      files=("${BINDIR}/plugins.d"/*.sh)
     fi
   fi
 
-  if [[ -n "${USER_PLUGIN_DIR}" && -d "${USER_PLUGIN_DIR}" ]]; then
+  if [[ -d "${USER_PLUGIN_DIR}" ]]; then
     yetus_debug "Loading user provided plugins from ${USER_PLUGIN_DIR}"
-    #shellcheck disable=SC2206
-    files+=(${USER_PLUGIN_DIR}/*.sh)
+    files+=("${USER_PLUGIN_DIR}"/*.sh)
   fi
 
-  if [[ -n ${PERSONALITY} && ! -f ${PERSONALITY} ]]; then
-    yetus_error "ERROR: Can't find ${PERSONALITY} to import."
-    unset PERSONALITY
-  fi
-
-  if [[ -z ${PERSONALITY}
-      && -f "${BINDIR}/personality/${PROJECT_NAME}.sh"
-      && ${LOAD_SYSTEM_PLUGINS} = "true" ]]; then
-    yetus_debug "Using project personality."
-    PERSONALITY="${BINDIR}/personality/${PROJECT_NAME}.sh"
-  fi
-
-  if [[ -n ${PERSONALITY} && -f ${PERSONALITY} ]]; then
+  if [[ -f ${PERSONALITY} ]]; then
     yetus_debug "Importing ${PERSONALITY}"
     # shellcheck disable=SC1090
-    . "${PERSONALITY}"
+    files+=("${PERSONALITY}")
   fi
 
   for i in "${files[@]}"; do
@@ -596,6 +598,7 @@
     fi
   done
 
+  # activate any replacement tests
   for i in "${TESTTYPES[@]}"; do
     if declare -f "${i}_deprecate_test_type" >/dev/null; then
       "${i}_deprecate_test_type"
diff --git a/precommit/src/main/shell/core.d/builtin-personality.sh b/precommit/src/main/shell/core.d/builtin-personality.sh
index c473d66..f54e7e5 100755
--- a/precommit/src/main/shell/core.d/builtin-personality.sh
+++ b/precommit/src/main/shell/core.d/builtin-personality.sh
@@ -14,26 +14,53 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-## @description  Generate a list of all personality modules for a given
-## @description  buildtool for the system to invoke
-## @audience     private
+
+
+## @description  Pick a personality_modules function
+## @description  tests that build support should call this
+## @description  to make sure they get queued correct by the
+## @description  personality or the build tool
+## @audience     public
 ## @stability    evolving
 ## @replaceable  no
-function personality_modules
+function personality_modules_wrapper
 {
-  if declare -f "${BUILDTOOL}_builtin_personality_modules" >/dev/null; then
+  declare status=$1
+  declare testtype=$2
+
+  if declare -f "${PROJECT_NAME}_personality_modules" >/dev/null; then
+    "${PROJECT_NAME}_personality_modules" "$@"
+  elif declare -f personality_modules >/dev/null; then
+    personality_modules "$@"
+  elif declare -f "${BUILDTOOL}_builtin_personality_modules" >/dev/null; then
     "${BUILDTOOL}_builtin_personality_modules" "$@"
+  else
+    yetus_debug "built-in personality: ${status} ${testtype}"
+
+    clear_personality_queue
+    for module in "${CHANGED_MODULES[@]}"; do
+      personality_enqueue_module "${module}"
+    done
   fi
 }
 
-## @description  Generate a list of all personality file tests for a given
-## @description  buildtool for the system to invoke
-## @audience     private
+## @description  Pick a personality_file_tests function
+## @description  tests that build support should call this
+## @description  to make sure they get queued correct by the
+## @description  personality or the build tool
+## @audience     public
 ## @stability    evolving
 ## @replaceable  no
-function personality_file_tests
+function personality_file_tests_wrapper
 {
-  if declare -f "${BUILDTOOL}_builtin_personality_file_tests" >/dev/null; then
+  if declare -f "${PROJECT_NAME}_personality_file_tests" >/dev/null; then
+    "${PROJECT_NAME}personality_file_tests" "$@"
+  elif declare -f personality_file_tests >/dev/null; then
+    personality_file_tests "$@"
+  elif declare -f "${BUILDTOOL}_builtin_personality_file_tests" >/dev/null; then
     "${BUILDTOOL}_builtin_personality_file_tests" "$@"
+  else
+    # no pre-determined tests
+    :
   fi
-}
+}
\ No newline at end of file
diff --git a/precommit/src/main/shell/personality/accumulo.sh b/precommit/src/main/shell/personality/accumulo.sh
deleted file mode 100755
index f0753f7..0000000
--- a/precommit/src/main/shell/personality/accumulo.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Run all plugins
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^ACCUMULO-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/accumulo"
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://accumulo.apache.org/git.html#contributors"
-  # We want to invoke the 'check' goal, not the default 'checkstyle'. We define
-  # our own checkstyle rules which isn't possible via 'checkstyle' configuration
-  #shellcheck disable=SC2034
-  CHECKSTYLE_GOAL="check"
-}
-
-## @description  Queue up modules for this personality
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-## @param        testtype
-function personality_modules
-{
-  local repostatus=$1
-  local testtype=$2
-
-  yetus_debug "Personality: ${repostatus} ${testtype}"
-  clear_personality_queue
-
-  if [[ ${testtype} ==  'unit' ]]; then
-    # Run all tests, not just the tests in the modules affected
-    yetus_debug "Overriding to run all unit tests"
-
-    personality_enqueue_module .
-    return
-  fi
-
-  # Make sure we re-add the changed modules if we didn't short-circuit out
-  for module in "${CHANGED_MODULES[@]}"; do
-    personality_enqueue_module "${module}"
-  done
-}
diff --git a/precommit/src/main/shell/personality/bigtop.sh b/precommit/src/main/shell/personality/bigtop.sh
deleted file mode 100755
index 0a423ab..0000000
--- a/precommit/src/main/shell/personality/bigtop.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all,-checkstyle,-findbugs,-spotbugs"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  # shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^BIGTOP-[0-9]+$'
-  # shellcheck disable=SC2034
-  BUILDTOOL=gradle
-  # shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/bigtop"
-}
diff --git a/precommit/src/main/shell/personality/drill.sh b/precommit/src/main/shell/personality/drill.sh
deleted file mode 100755
index 4686cb6..0000000
--- a/precommit/src/main/shell/personality/drill.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/drill"
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://drill.apache.org/docs/apache-drill-contribution-guidelines/"
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^DRILL-[0-9]+$'
-  #shellcheck disable=SC2034
-  JIRA_STATUS_RE='Reviewable'
-}
diff --git a/precommit/src/main/shell/personality/flink.sh b/precommit/src/main/shell/personality/flink.sh
deleted file mode 100755
index 279d491..0000000
--- a/precommit/src/main/shell/personality/flink.sh
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^FLINK-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/flink"
-}
-
-add_test_type flinklib
-
-## @description  flinklib file filter
-## @audience     private
-## @stability    evolving
-## @param        filename
-function flinklib_filefilter
-{
-  local filename=$1
-
-  if [[ ${filename} =~ \.java$
-    || ${filename} =~ \.scala$
-    || ${filename} =~ pom.xml$ ]]; then
-    add_test flinklib
-  fi
-}
-
-## @description  count files in the lib dir
-## @audience     private
-## @stability    evolving
-function flinklib_count
-{
-  find "${BASEDIR}" \
-    | ${GREP} "/lib/" \
-    | ${GREP} -v "_qa_workdir" \
-    | wc -l
-}
-
-## @description  check fliblib
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-function flinklib_rebuild
-{
-  declare repostatus=$1
-
-  start_clock
-  big_console_header "${PATCH_BRANCH} flink library dependencies"
-
-  if ! verify_needed_test flinklib; then
-    echo "${BUILDMODEMSG} does not need flinklib testing."
-    return 0
-  fi
-
-  pushd "${BASEDIR}" >/dev/null || return 1
-  if ! echo_and_redirect "${PATCH_DIR}/${repostatus}-flinklib-root.txt" \
-     "${MAVEN}" "${MAVEN_ARGS[@]}" package -DskipTests -Dmaven.javadoc.skip=true -Ptest-patch; then
-     add_vote_table_v2 -1 flinklib \
-      "@@BASE@@/${repostatus}-flinklib-root.txt" \
-      "Unable to determine flink libs in ${PATCH_BRANCH}."
-  fi
-
-  if [[ ${repostatus} = branch ]]; then
-    FLINK_PRE_LIB_FILES=$(flinklib_count)
-    return 0
-  else
-    FLINK_POST_LIB_FILES=$(flinklib_count)
-  fi
-  popd >/dev/null || return 1
-
-  if [[ "${BUILDMODE}" = full ]]; then
-    if [[ ${FLINK_POST_LIB_FILES} -gt 0 ]]; then
-      add_vote_table_v2 -1 flinklib "" "Lib folder dependencies are currently ${FLINK_POST_LIB_FILES}"
-      return 1
-    else
-      add_vote_table_v2 +1 flinklib "" "No lib folder dependencies!"
-      return 0
-    fi
-  fi
-
-  if [[ "${FLINK_POST_LIB_FILES}" -gt "${FLINK_PRE_LIB_FILES}" ]]; then
-    add_vote_table_v2 -1 flinklib "" "Patch increases lib folder dependencies from " \
-      "${FLINK_PRE_LIB_FILES} to ${FLINK_POST_LIB_FILES}"
-    return 1
-  elif [[ "${FLINK_POST_LIB_FILES}" -eq "${FLINK_PRE_LIB_FILES}" ]]; then
-    add_vote_table_v2 0 flinklib "" "Patch did not change lib dependencies" \
-      " (still ${FLINK_PRE_LIB_FILES})"
-  else
-    add_vote_table_v2 +1 flinklib "" "Patch decreases lib folder dependencies by " \
-      "$((FLINK_PRE_LIB_FILES-FLINK_POST_LIB_FILES))."
-  fi
-  return 0
-}
diff --git a/precommit/src/main/shell/personality/geode.sh b/precommit/src/main/shell/personality/geode.sh
deleted file mode 100755
index e170d56..0000000
--- a/precommit/src/main/shell/personality/geode.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all,-ant,-javac,-scalac,-scaladoc"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=develop
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://cwiki.apache.org/confluence/display/GEODE/How+to+Contribute"
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^(GEODE)-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/incubator-geode"
-  #shellcheck disable=SC2034
-  BUILDTOOL=gradle
-}
diff --git a/precommit/src/main/shell/personality/hadoop.sh b/precommit/src/main/shell/personality/hadoop.sh
deleted file mode 100755
index e256106..0000000
--- a/precommit/src/main/shell/personality/hadoop.sh
+++ /dev/null
@@ -1,591 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# SHELLDOC-IGNORE
-#
-# Override these to match Apache Hadoop's requirements
-personality_plugins "all,-ant,-gradle,-scalac,-scaladoc"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=trunk
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://wiki.apache.org/hadoop/HowToContribute"
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^(HADOOP|YARN|MAPREDUCE|HDFS|HDDS|SUBMARINE)-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/hadoop"
-
-  HADOOP_HOMEBREW_DIR=${HADOOP_HOMEBREW_DIR:-$(brew --prefix 2>/dev/null)}
-  if [[ -z "${HADOOP_HOMEBREW_DIR}" ]]; then
-    HADOOP_HOMEBREW_DIR=/usr/local
-  fi
-}
-
-function personality_parse_args
-{
-  declare i
-
-  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
-  done
-}
-
-## @description  Calculate the actual module ordering
-## @audience     private
-## @stability    evolving
-## @param        ordering
-function hadoop_order
-{
-  declare ordering=$1
-  declare hadoopm
-
-  if [[ ${ordering} = normal ]]; then
-    hadoopm="${CHANGED_MODULES[*]}"
-  elif [[ ${ordering} = union ]]; then
-    hadoopm="${CHANGED_UNION_MODULES}"
-  elif [[ ${ordering} = mvnsrc ]]; then
-    hadoopm="${MAVEN_SRC_MODULES[*]}"
-  elif [[ ${ordering} = mvnsrctest ]]; then
-    hadoopm="${MAVEN_SRCTEST_MODULES[*]}"
-  else
-    hadoopm="${ordering}"
-  fi
-  echo "${hadoopm}"
-}
-
-## @description  Determine if it is safe to run parallel tests
-## @audience     private
-## @stability    evolving
-## @param        ordering
-function hadoop_test_parallel
-{
-  if [[ -f "${BASEDIR}/pom.xml" ]]; then
-    HADOOP_VERSION=$(grep '<version>' "${BASEDIR}/pom.xml" \
-        | head -1 \
-        | "${SED}"  -e 's|^ *<version>||' -e 's|</version>.*$||' \
-        | cut -f1 -d- )
-    export HADOOP_VERSION
-  else
-    return 1
-  fi
-
-  hmajor=${HADOOP_VERSION%%\.*}
-  hmajorminor=${HADOOP_VERSION%\.*}
-  hminor=${hmajorminor##*\.}
-  # ... and just for reference
-  #hmicro=${HADOOP_VERSION##*\.}
-
-  # Apache Hadoop v2.8.0 was the first one to really
-  # get working parallel unit tests
-  if [[ ${hmajor} -lt 3 && ${hminor} -lt 8 ]]; then
-    return 1
-  fi
-
-  return 0
-}
-
-## @description  Install extra modules for unit tests
-## @audience     private
-## @stability    evolving
-## @param        ordering
-function hadoop_unittest_prereqs
-{
-  declare input=$1
-  declare mods
-  declare need_common=0
-  declare building_common=0
-  declare module
-  declare flags
-  declare fn
-
-  # prior to running unit tests, hdfs needs libhadoop.so built
-  # if we're building root, then this extra work is moot
-
-  #shellcheck disable=SC2086
-  mods=$(hadoop_order ${input})
-
-  for module in ${mods}; do
-    if [[ ${module} = hadoop-hdfs-project* ]]; then
-      need_common=1
-    elif [[ ${module} = hadoop-common-project/hadoop-common
-      || ${module} = hadoop-common-project ]]; then
-      building_common=1
-    elif [[ ${module} = . ]]; then
-      return
-    fi
-  done
-
-  # Windows builds *ALWAYS* need hadoop-common compiled
-  case ${OSTYPE} in
-    Windows_NT|CYGWIN*|MINGW*|MSYS*)
-      need_common=1
-    ;;
-  esac
-
-  if [[ ${need_common} -eq 1
-      && ${building_common} -eq 0 ]]; then
-    echo "unit test pre-reqs:"
-    module="hadoop-common-project/hadoop-common"
-    fn=$(module_file_fragment "${module}")
-    flags="$(hadoop_native_flags) $(yarn_ui2_flag)"
-    pushd "${BASEDIR}/${module}" >/dev/null || return 1
-    # shellcheck disable=SC2086
-    echo_and_redirect "${PATCH_DIR}/maven-unit-prereq-${fn}-install.txt" \
-      "${MAVEN}" "${MAVEN_ARGS[@]}" install -DskipTests ${flags}
-    popd >/dev/null || return 1
-  fi
-}
-
-## @description  Calculate the flags/settings for yarn-ui v2 build
-## @description  based upon the OS
-## @audience     private
-## @stability    evolving
-function yarn_ui2_flag
-{
-
-  if [[ ${BUILD_NATIVE} != true ]]; then
-    return
-  fi
-
-  # Now it only tested on Linux/OSX, don't enable the profile on
-  # windows until it get verified
-  case ${OSTYPE} in
-    Linux)
-      # shellcheck disable=SC2086
-      echo -Pyarn-ui
-    ;;
-    Darwin)
-      echo -Pyarn-ui
-    ;;
-    *)
-      # Do nothing
-    ;;
-  esac
-}
-
-## @description  Calculate the flags/settings for native code
-## @description  based upon the OS
-## @audience     private
-## @stability    evolving
-function hadoop_native_flags
-{
-  if [[ ${BUILD_NATIVE} != true ]]; then
-    return
-  fi
-
-  declare -a args
-
-  # Based upon HADOOP-11937
-  #
-  # Some notes:
-  #
-  # - getting fuse to compile on anything but Linux
-  #   is always tricky.
-  # - Darwin assumes homebrew is in use.
-  # - HADOOP-12027 required for bzip2 on OS X.
-  # - bzip2 is broken in lots of places
-  #   (the shared library is considered experimental)
-  #   e.g, HADOOP-12027 for OS X. so no -Drequire.bzip2
-  #
-
-  args=("-Drequire.test.libhadoop")
-
-  if [[ -d "${ISAL_HOME}/include" ]]; then
-    args=("${args[@]}" "-Disal.prefix=${ISAL_HOME}")
-  fi
-
-  if [[ -d "${OPENSSL_HOME}/include" ]]; then
-    args=("${args[@]}" "-Dopenssl.prefix=${OPENSSL_HOME}")
-  elif [[ -d "${HADOOP_HOMEBREW_DIR}/opt/openssl/" ]]; then
-    args=("${args[@]}" "-Dopenssl.prefix=${HADOOP_HOMEBREW_DIR}/opt/openssl/")
-  fi
-
-  if [[ -d "${SNAPPY_HOME}/include" ]]; then
-    args=("${args[@]}" "-Dsnappy.prefix=${SNAPPY_HOME}")
-  elif [[ -d "${HADOOP_HOMEBREW_DIR}/include/snappy.h" ]]; then
-    args=("${args[@]}" "-Dsnappy.prefix=${HADOOP_HOMEBREW_DIR}/opt/snappy")
-  fi
-
-  case ${OSTYPE} in
-    Linux)
-      # shellcheck disable=SC2086
-      echo \
-        -Pnative \
-        -Drequire.fuse \
-        -Drequire.openssl \
-        -Drequire.snappy \
-        -Drequire.valgrind \
-        -Drequire.zstd \
-        "${args[@]}"
-    ;;
-    Darwin)
-      echo \
-        "${args[@]}" \
-        -Pnative \
-        -Drequire.snappy  \
-        -Drequire.openssl
-    ;;
-    Windows_NT|CYGWIN*|MINGW*|MSYS*)
-      echo \
-        "${args[@]}" \
-        -Drequire.snappy -Drequire.openssl -Pnative-win
-    ;;
-    *)
-      echo \
-        "${args[@]}"
-    ;;
-  esac
-}
-
-## @description  Queue up modules for this personality
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-## @param        testtype
-function personality_modules
-{
-  declare repostatus=$1
-  declare testtype=$2
-  declare extra=""
-  declare ordering="normal"
-  declare needflags=false
-  declare foundbats=false
-  declare flags
-  declare fn
-  declare i
-  declare hadoopm
-
-  yetus_debug "Personality: ${repostatus} ${testtype}"
-
-  clear_personality_queue
-
-  case ${testtype} in
-    asflicense)
-      # this is very fast and provides the full path if we do it from
-      # the root of the source
-      personality_enqueue_module .
-      return
-    ;;
-    checkstyle)
-      ordering="union"
-      extra="-DskipTests"
-    ;;
-    compile)
-      ordering="union"
-      extra="-DskipTests"
-      needflags=true
-
-      # if something in common changed, we build the whole world
-      if [[ "${CHANGED_MODULES[*]}" =~ hadoop-common ]]; then
-        yetus_debug "hadoop personality: javac + hadoop-common = ordering set to . "
-        ordering="."
-      fi
-    ;;
-    distclean)
-      ordering="."
-      extra="-DskipTests"
-    ;;
-    javadoc)
-      if [[ "${CHANGED_MODULES[*]}" =~ \. ]]; then
-        ordering=.
-      fi
-
-      if [[ "${repostatus}" = patch && "${BUILDMODE}" = patch ]]; then
-        echo "javadoc pre-reqs:"
-        for i in hadoop-project \
-          hadoop-common-project/hadoop-annotations; do
-            fn=$(module_file_fragment "${i}")
-            pushd "${BASEDIR}/${i}" >/dev/null || return 1
-            echo "cd ${i}"
-            echo_and_redirect "${PATCH_DIR}/maven-${fn}-install.txt" \
-              "${MAVEN}" "${MAVEN_ARGS[@]}" install
-            popd >/dev/null || return 1
-        done
-      fi
-      extra="-Pdocs -DskipTests"
-    ;;
-    mvneclipse)
-      if [[ "${CHANGED_MODULES[*]}" =~ \. ]]; then
-        ordering=.
-      fi
-    ;;
-    mvninstall)
-      extra="-DskipTests"
-      if [[ "${repostatus}" = branch || "${BUILDMODE}" = full ]]; then
-        ordering=.
-      fi
-    ;;
-    mvnsite)
-      if [[ "${CHANGED_MODULES[*]}" =~ \. ]]; then
-        ordering=.
-      fi
-    ;;
-    unit)
-      if [[ "${BUILDMODE}" = full ]]; then
-        ordering=mvnsrc
-      elif [[ "${CHANGED_MODULES[*]}" =~ \. ]]; then
-        ordering=.
-      fi
-
-      if [[ ${TEST_PARALLEL} = "true" ]] ; then
-        if hadoop_test_parallel; then
-          extra="-Pparallel-tests"
-          if [[ -n ${TEST_THREADS:-} ]]; then
-            extra="${extra} -DtestsThreadCount=${TEST_THREADS}"
-          fi
-        fi
-      fi
-      needflags=true
-      hadoop_unittest_prereqs "${ordering}"
-
-      if ! verify_needed_test javac; then
-        yetus_debug "hadoop: javac not requested"
-        if ! verify_needed_test native; then
-          yetus_debug "hadoop: native not requested"
-          yetus_debug "hadoop: adding -DskipTests to unit test"
-          extra="-DskipTests"
-        fi
-      fi
-
-      for i in "${CHANGED_FILES[@]}"; do
-        if [[ "${i}" =~ \.bats ]]; then
-          foundbats=true
-        fi
-      done
-
-      if ! verify_needed_test shellcheck && [[ ${foundbats} = false ]]; then
-        yetus_debug "hadoop: NO shell code change detected; disabling shelltest profile"
-        extra="${extra} -P!shelltest"
-      else
-        extra="${extra} -Pshelltest"
-      fi
-    ;;
-    *)
-      extra="-DskipTests"
-    ;;
-  esac
-
-  if [[ ${needflags} = true ]]; then
-    flags="$(hadoop_native_flags) $(yarn_ui2_flag)"
-    extra="${extra} ${flags}"
-  fi
-
-  extra="-Ptest-patch ${extra}"
-  OZONE_CHANGED=false
-  CORE_HADOOP_CHANGED=false
-  for module in "${CHANGED_MODULES[@]}"
-  do
-    if [[ "$module" =~ "hdds" ]]; then
-      OZONE_CHANGED=true
-    elif [[ "$module" =~ "ozone" ]]; then
-      OZONE_CHANGED=true
-    else
-      CORE_HADOOP_CHANGED=true
-    fi
-  done
-
-  if [ "$OZONE_CHANGED" = true ]; then
-    extra="-Phdds ${extra}"
-  fi
-
-  if [ "$CORE_HADOOP_CHANGED" = false ] && [ "$OZONE_CHANGED" = true ]; then
-    if [ "$testtype" != "mvnsite" ] && [ "$testtype" != "shadedclient" ]; then
-      #shellcheck disable=SC2086
-      personality_enqueue_module hadoop-hdds ${extra}
-      #shellcheck disable=SC2086
-      personality_enqueue_module hadoop-ozone ${extra}
-    fi
-  else
-    for module in $(hadoop_order ${ordering}); do
-      # shellcheck disable=SC2086
-      personality_enqueue_module ${module} ${extra}
-    done
-  fi
-}
-
-## @description  Add tests based upon personality needs
-## @audience     private
-## @stability    evolving
-## @param        filename
-function personality_file_tests
-{
-  declare filename=$1
-
-  yetus_debug "Using Hadoop-specific personality_file_tests"
-
-  if [[ ${filename} =~ src/main/webapp ]]; then
-    yetus_debug "tests/webapp: ${filename}"
-    add_test shadedclient
-  elif [[ ${filename} =~ \.sh
-       || ${filename} =~ \.cmd
-       || ${filename} =~ src/scripts
-       || ${filename} =~ src/test/scripts
-       || ${filename} =~ src/main/bin
-       || ${filename} =~ shellprofile\.d
-       || ${filename} =~ src/main/conf
-       ]]; then
-    yetus_debug "tests/shell: ${filename}"
-    add_test mvnsite
-    add_test unit
-  elif [[ ${filename} =~ \.md$
-       || ${filename} =~ \.md\.vm$
-       || ${filename} =~ src/site
-       ]]; then
-    yetus_debug "tests/site: ${filename}"
-    add_test mvnsite
-  elif [[ ${filename} =~ \.c$
-       || ${filename} =~ \.cc$
-       || ${filename} =~ \.h$
-       || ${filename} =~ \.hh$
-       || ${filename} =~ \.proto$
-       || ${filename} =~ \.cmake$
-       || ${filename} =~ CMakeLists.txt
-       ]]; then
-    yetus_debug "tests/units: ${filename}"
-    add_test compile
-    add_test cc
-    add_test mvnsite
-    add_test javac
-    add_test unit
-  elif [[ ${filename} =~ build.xml$
-       || ${filename} =~ pom.xml$
-       || ${filename} =~ \.java$
-       || ${filename} =~ src/main
-       ]]; then
-      yetus_debug "tests/javadoc+units: ${filename}"
-      add_test compile
-      add_test javac
-      add_test javadoc
-      add_test mvninstall
-      add_test mvnsite
-      add_test unit
-      add_test shadedclient
-  fi
-
-  # if we change anything in here, e.g. the test scripts
-  # then run the client artifact tests
-  if [[ ${filename} =~ hadoop-client-modules ]]; then
-    add_test shadedclient
-  fi
-
-  if [[ ${filename} =~ src/test ]]; then
-    yetus_debug "tests: src/test"
-    add_test unit
-  fi
-
-  if [[ ${filename} =~ \.java$ ]]; then
-    add_test findbugs
-  fi
-}
-
-## @description  Image to print on success
-## @audience     private
-## @stability    evolving
-function hadoop_console_success
-{
-  printf "IF9fX19fX19fX18gCjwgU3VjY2VzcyEgPgogLS0tLS0tLS0tLSAKIFwgICAg";
-  printf "IC9cICBfX18gIC9cCiAgXCAgIC8vIFwvICAgXC8gXFwKICAgICAoKCAgICBP";
-  printf "IE8gICAgKSkKICAgICAgXFwgLyAgICAgXCAvLwogICAgICAgXC8gIHwgfCAg";
-  printf "XC8gCiAgICAgICAgfCAgfCB8ICB8ICAKICAgICAgICB8ICB8IHwgIHwgIAog";
-  printf "ICAgICAgIHwgICBvICAgfCAgCiAgICAgICAgfCB8ICAgfCB8ICAKICAgICAg";
-  printf "ICB8bXwgICB8bXwgIAo"
-}
-
-###################################################
-# Hadoop project specific check of IT for shaded artifacts
-
-add_test_type shadedclient
-
-## @description check for test modules and add test/plugins as needed
-## @audience private
-## @stability evolving
-function shadedclient_initialize
-{
-  maven_add_install shadedclient
-}
-
-## @description build client facing shaded artifacts and test them
-## @audience private
-## @stability evolving
-## @param repostatus
-function shadedclient_rebuild
-{
-  declare repostatus=$1
-  declare logfile="${PATCH_DIR}/${repostatus}-shadedclient.txt"
-  declare module
-  declare -a modules=()
-
-  if [[ ${OSTYPE} = Windows_NT ||
-        ${OSTYPE} =~ ^CYGWIN.* ||
-        ${OSTYPE} =~ ^MINGW32.* ||
-        ${OSTYPE} =~ ^MSYS.* ]]; then
-    echo "hadoop personality: building on windows, skipping check of client artifacts."
-    return 0
-  fi
-
-  yetus_debug "hadoop personality: seeing if we need the test of client artifacts."
-  for module in hadoop-client-modules/hadoop-client-check-invariants \
-                hadoop-client-modules/hadoop-client-check-test-invariants \
-                hadoop-client-modules/hadoop-client-integration-tests; do
-    if [ -d "${module}" ]; then
-      yetus_debug "hadoop personality: test module '${module}' is present."
-      modules+=(-pl "${module}")
-    fi
-  done
-  if [ ${#modules[@]} -eq 0 ]; then
-    echo "hadoop personality: no test modules present, skipping check of client artifacts."
-    return 0
-  fi
-
-  big_console_header "Checking client artifacts on ${repostatus}"
-
-  echo_and_redirect "${logfile}" \
-    "${MAVEN}" "${MAVEN_ARGS[@]}" verify -fae --batch-mode -am \
-      "${modules[@]}" \
-      -Dtest=NoUnitTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -Dfindbugs.skip=true
-
-  count=$("${GREP}" -c '\[ERROR\]' "${logfile}")
-  if [[ ${count} -gt 0 ]]; then
-    add_vote_table_v2 -1 shadedclient \
-      "@@BASE@@/${repostatus}-shadedclient.txt" \
-      "${repostatus} has errors when building and testing our client artifacts."
-    return 1
-  fi
-
-  add_vote_table_v2 +1 shadedclient "" "${repostatus} has no errors when building and testing our client artifacts."
-  return 0
-}
diff --git a/precommit/src/main/shell/personality/hbase.sh b/precommit/src/main/shell/personality/hbase.sh
deleted file mode 100755
index 6eebfb3..0000000
--- a/precommit/src/main/shell/personality/hbase.sh
+++ /dev/null
@@ -1,371 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  PROJECT_NAME=hbase
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^HBASE-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/hbase"
-
-  # TODO use PATCH_BRANCH to select hadoop versions to use.
-  # All supported Hadoop versions that we want to test the compilation with
-  HBASE_HADOOP_VERSIONS="2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.6.1 2.6.2 2.6.3 2.7.1"
-
-  # TODO use PATCH_BRANCH to select jdk versions to use.
-
-  # Override the maven options
-  MAVEN_OPTS="${MAVEN_OPTS:-"-Xmx3100M"}"
-
-}
-
-## @description  Queue up modules for this personality
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-## @param        testtype
-function personality_modules
-{
-  local repostatus=$1
-  local testtype=$2
-  local extra=""
-
-  yetus_debug "Personality: ${repostatus} ${testtype}"
-
-  clear_personality_queue
-
-  extra="-DHBasePatchProcess"
-
-  if [[ ${repostatus} == branch
-     && ${testtype} == mvninstall ]] ||
-     [[ "${BUILDMODE}" == full ]];then
-    personality_enqueue_module . ${extra}
-    return
-  fi
-
-  if [[ ${testtype} = findbugs ]]; then
-    for module in "${CHANGED_MODULES[@]}"; do
-      # skip findbugs on hbase-shell and hbase-it. hbase-it has nothing
-      # in src/main/java where findbugs goes to look
-      if [[ ${module} == hbase-shell ]]; then
-        continue
-      elif [[ ${module} == hbase-it ]]; then
-        continue
-      else
-        # shellcheck disable=SC2086
-        personality_enqueue_module ${module} ${extra}
-      fi
-    done
-    return
-  fi
-
-  if [[ ${testtype} = unit ]]; then
-    extra="${extra} -PrunAllTests"
-
-    # Inject the jenkins build-id for our surefire invocations
-    # Used by zombie detection stuff, even though we're not including that yet.
-    if [ -n "${BUILD_ID}" ]; then
-      extra="${extra} -Dbuild.id=${BUILD_ID}"
-    fi
-  fi
-
-  for module in "${CHANGED_MODULES[@]}"; do
-    # shellcheck disable=SC2086
-    personality_enqueue_module ${module} ${extra}
-  done
-}
-
-###################################################
-# Below here are our one-off tests specific to hbase.
-# TODO break them into individual files so it's easier to maintain them?
-
-# TODO line length check? could ignore all java files since checkstyle gets them.
-
-###################################################
-
-add_test_type hadoopcheck
-
-## @description  hadoopcheck file filter
-## @audience     private
-## @stability    evolving
-## @param        filename
-function hadoopcheck_filefilter
-{
-  local filename=$1
-
-  if [[ ${filename} =~ \.java$ ]]; then
-    add_test hadoopcheck
-  fi
-}
-
-## @description  hadoopcheck test
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-function hadoopcheck_rebuild
-{
-  local repostatus=$1
-  local hadoopver
-  local logfile
-  local count
-  local result=0
-
-  if [[ "${repostatus}" = branch ]]; then
-    return 0
-  fi
-
-  big_console_header "Compiling against various Hadoop versions"
-
-  export MAVEN_OPTS="${MAVEN_OPTS}"
-  for hadoopver in ${HBASE_HADOOP_VERSIONS}; do
-    logfile="${PATCH_DIR}/patch-javac-${hadoopver}.txt"
-    echo_and_redirect "${logfile}" \
-      "${MAVEN}" clean install \
-        -DskipTests -DHBasePatchProcess \
-        -Dhadoop-two.version="${hadoopver}"
-    count=$(${GREP} -c ERROR "${logfile}")
-    if [[ ${count} -gt 0 ]]; then
-      add_vote_table_v2 -1 \
-        hadoopcheck \
-        "@@BASE@@/patch-javac-${hadoopver}.txt" \
-        "${BUILDMODEMSG} causes ${count} errors with Hadoop v${hadoopver}."
-      ((result=result+1))
-    fi
-  done
-
-  if [[ ${result} -gt 0 ]]; then
-    return 1
-  fi
-
-  add_vote_table_v2 +1 hadoopcheck "" "${BUILDMODEMSG} does not cause any errors with Hadoop ${HBASE_HADOOP_VERSIONS}."
-  return 0
-}
-
-######################################
-
-# TODO if we need the protoc check, we probably need to check building all the modules that rely on hbase-protocol
-add_test_type hbaseprotoc
-
-## @description  hbaseprotoc file filter
-## @audience     private
-## @stability    evolving
-## @param        filename
-function hbaseprotoc_filefilter
-{
-  local filename=$1
-
-  if [[ ${filename} =~ \.proto$ ]]; then
-    add_test hbaseprotoc
-  fi
-}
-
-## @description  hadoopcheck test
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-function hbaseprotoc_rebuild
-{
-  declare repostatus=$1
-  declare i=0
-  declare fn
-  declare module
-  declare logfile
-  declare count
-  declare result
-
-  if [[ "${repostatus}" = branch ]]; then
-    return 0
-  fi
-
-  if ! verify_needed_test hbaseprotoc; then
-    return 0
-  fi
-
-  big_console_header "HBase protoc plugin: ${BUILDMODE}"
-
-  start_clock
-
-  personality_modules patch hbaseprotoc
-  modules_workers patch hbaseprotoc compile -DskipTests -Pcompile-protobuf -X -DHBasePatchProcess
-
-  # shellcheck disable=SC2153
-  until [[ $i -eq "${#MODULE[@]}" ]]; do
-    if [[ ${MODULE_STATUS[${i}]} == -1 ]]; then
-      ((result=result+1))
-      ((i=i+1))
-      continue
-    fi
-    module=${MODULE[$i]}
-    fn=$(module_file_fragment "${module}")
-    logfile="${PATCH_DIR}/patch-hbaseprotoc-${fn}.txt"
-
-    count=$(${GREP} -c ERROR "${logfile}")
-
-    if [[ ${count} -gt 0 ]]; then
-      module_status "${i}" -1 "patch-hbaseprotoc-${fn}.txt" "Patch generated "\
-        "${count} new protoc errors in ${module}."
-      ((result=result+1))
-    fi
-    ((i=i+1))
-  done
-
-  modules_messages patch hbaseprotoc true
-  if [[ ${result} -gt 0 ]]; then
-    return 1
-  fi
-  return 0
-}
-
-######################################
-
-add_test_type hbaseanti
-
-## @description  hbaseanti file filter
-## @audience     private
-## @stability    evolving
-## @param        filename
-function hbaseanti_filefilter
-{
-  local filename=$1
-
-  if [[ ${filename} =~ \.java$ ]]; then
-    add_test hbaseanti
-  fi
-}
-
-## @description  hbaseanti patch file check
-## @audience     private
-## @stability    evolving
-## @param        filename
-function hbaseanti_patchfile
-{
-  local patchfile=$1
-  local warnings
-  local result
-
-  if [[ "${BUILDMODE}" = full ]]; then
-    return 0
-  fi
-
-  if ! verify_needed_test hbaseanti; then
-    return 0
-  fi
-
-  big_console_header "Checking for known anti-patterns"
-
-  start_clock
-
-  warnings=$("${GREP}" 'new TreeMap<byte.*()' "${patchfile}")
-  if [[ ${warnings} -gt 0 ]]; then
-    add_vote_table_v2 -1 hbaseanti "" "The patch appears to have anti-pattern where BYTES_COMPARATOR was omitted: ${warnings}."
-    ((result=result+1))
-  fi
-
-  warnings=$("${GREP}" 'import org.apache.hadoop.classification' "${patchfile}")
-  if [[ ${warnings} -gt 0 ]]; then
-    add_vote_table_v2 -1 hbaseanti "" "The patch appears use Hadoop classification instead of HBase: ${warnings}."
-    ((result=result+1))
-  fi
-
-  if [[ ${result} -gt 0 ]]; then
-    return 1
-  fi
-
-  add_vote_table_v2 +1 hbaseanti "" "Patch does not have any anti-patterns."
-  return 0
-}
-
-
-## @description  hbase custom mvnsite file filter.  See HBASE-15042
-## @audience     private
-## @stability    evolving
-## @param        filename
-function mvnsite_filefilter
-{
-  local filename=$1
-
-  if [[ ${BUILDTOOL} = maven ]]; then
-    if [[ ${filename} =~ src/main/site || ${filename} =~ src/main/asciidoc ]]; then
-      yetus_debug "tests/mvnsite: ${filename}"
-      add_test mvnsite
-    fi
-  fi
-}
-
-## This is named so that yetus will check us right after running tests.
-## Essentially, we check for normal failures and then we look for zombies.
-#function hbase_unit_logfilter
-#{
-#  declare testtype="unit"
-#  declare input=$1
-#  declare output=$2
-#  declare processes
-#  declare process_output
-#  declare zombies
-#  declare zombie_count=0
-#  declare zombie_process
-#
-#  yetus_debug "in hbase-specific unit logfilter."
-#
-#  # pass-through to whatever is counting actual failures
-#  if declare -f ${BUILDTOOL}_${testtype}_logfilter >/dev/null; then
-#    "${BUILDTOOL}_${testtype}_logfilter" "${input}" "${output}"
-#  elif declare -f ${testtype}_logfilter >/dev/null; then
-#    "${testtype}_logfilter" "${input}" "${output}"
-#  fi
-#
-#  start_clock
-#  if [ -n "${BUILD_ID}" ]; then
-#    yetus_debug "Checking for zombie test processes."
-#    processes=$(jps -v | "${GREP}" surefirebooter | "${GREP}" -e "hbase.build.id=${BUILD_ID}")
-#    if [ -n "${processes}" ] && [ "$(echo "${processes}" | wc -l)" -gt 0 ]; then
-#      yetus_warn "Found some suspicious process(es). Waiting a bit to see if they're just slow to stop."
-#      yetus_debug "${processes}"
-#      sleep 30
-#      #shellcheck disable=SC2016
-#      for pid in $(echo "${processes}"| ${AWK} '{print $1}'); do
-#        # Test our zombie still running (and that it still an hbase build item)
-#        process_output=$(ps -p "${pid}" | tail +2 | "${GREP}" -e "hbase.build.id=${BUILD_ID}")
-#        if [[ -n "${process_output}" ]]; then
-#          yetus_error "Zombie: ${process_output}"
-#          ((zombie_count = zombie_count + 1))
-#          zombie_process=$(jstack "${pid}" | "${GREP}" -e "\.Test" | "${GREP}" -e "\.java"| head -3)
-#          zombies="${zombies} ${zombie_process}"
-#        fi
-#      done
-#    fi
-#    if [ "${zombie_count}" -ne 0 ]; then
-#      add_vote_table_v2 -1 zombies "There are ${zombie_count} zombie test(s)"
-#      populate_test_table "zombie unit tests" "${zombies}"
-#    else
-#      yetus_info "Zombie check complete. All test runs exited normally."
-#      stop_clock
-#    fi
-#  else
-#    add_vote_table_v2 -0 zombies "There is no BUILD_ID env variable; can't check for zombies."
-#  fi
-#
-#}
diff --git a/precommit/src/main/shell/personality/jmeter.sh b/precommit/src/main/shell/personality/jmeter.sh
deleted file mode 100755
index 788a304..0000000
--- a/precommit/src/main/shell/personality/jmeter.sh
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all,-javadoc,-findbugs,-asflicense,-spotbugs"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=trunk
-  # shellcheck disable=SC2034
-  BUILDTOOL=ant
-  # shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/jmeter"
-  # shellcheck disable=SC2034
-  JMETER_DOWNLOAD_JARS=false
-}
-
-add_test_type jmeter
-
-## @description  Personality usage options
-## @audience     private
-## @stability    evolving
-function jmeter_usage
-{
-  yetus_add_option "--jmeter-download-jars=<bool>"  "download third-party jars needed by ant build"
-}
-
-## @description  Process personality options
-## @audience     private
-## @stability    evolving
-## @param        arguments
-function jmeter_parse_args
-{
-  declare i
-
-  for i in "$@"; do
-    case ${i} in
-      --jmeter-download-jars=*)
-        delete_parameter "${i}"
-        JMETER_DOWNLOAD_JARS=${i#*=}
-      ;;
-    esac
-  done
-}
-
-## @description  Download jmetere dependencies
-## @audience     private
-## @stability    evolving
-function jmeter_precheck
-{
-  if [[ ${JMETER_DOWNLOAD_JARS} = true ]]; then
-    pushd "${BASEDIR}" >/dev/null || return 1
-    echo_and_redirect "${PATCH_DIR}/jmeter-branch-download-jars.txt" "${ANT}" download_jars
-    popd >/dev/null || return 1
-  fi
-}
diff --git a/precommit/src/main/shell/personality/kafka.sh b/precommit/src/main/shell/personality/kafka.sh
deleted file mode 100755
index 77534d3..0000000
--- a/precommit/src/main/shell/personality/kafka.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all,-checkstyle,-asflicense"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=trunk
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^KAFKA-[0-9]+$'
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://kafka.apache.org/contributing.html"
-  # shellcheck disable=SC2034
-  BUILDTOOL=gradle
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/kafka"
-}
-
-## @description  Queue up modules for this personality
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-## @param        testtype
-function personality_modules
-{
-  declare repostatus=$1
-  declare testtype=$2
-  declare module
-  declare extra=""
-
-  yetus_debug "Using kafka personality_modules"
-  yetus_debug "Personality: ${repostatus} ${testtype}"
-
-  clear_personality_queue
-
-  case ${testtype} in
-    gradleboot)
-      # kafka's bootstrap is broken
-      if [[ ${testtype} == gradleboot ]]; then
-        pushd "${BASEDIR}" >/dev/null || return 1
-        echo_and_redirect "${PATCH_DIR}/kafka-configure-gradle.txt" gradle
-        popd >/dev/null || return 1
-      fi
-    ;;
-    compile)
-      extra="clean jar"
-    ;;
-  esac
-
-  for module in "${CHANGED_MODULES[@]}"; do
-    # shellcheck disable=SC2086
-    personality_enqueue_module "${module}" ${extra}
-  done
-}
diff --git a/precommit/src/main/shell/personality/orc.sh b/precommit/src/main/shell/personality/orc.sh
deleted file mode 100755
index 6fb5796..0000000
--- a/precommit/src/main/shell/personality/orc.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all,-checkstyle,-findbugs,-spotbugs"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^ORC-[0-9]+$'
-  # shellcheck disable=SC2034
-  BUILDTOOL=cmake
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/orc"
-
-  # protobuf fails
-  #shellcheck disable=SC2034
-  CMAKE_ROOT_BUILD=true
-}
diff --git a/precommit/src/main/shell/personality/pig.sh b/precommit/src/main/shell/personality/pig.sh
deleted file mode 100755
index 0c88557..0000000
--- a/precommit/src/main/shell/personality/pig.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=trunk
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^PIG-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/pig"
-  #shellcheck disable=SC2034
-  BUILDTOOL=ant
-}
-
-## @description  Queue up modules for this personality
-## @audience     private
-## @stability    evolving
-## @param        repostatus
-## @param        testtype
-function personality_modules
-{
-  local repostatus=$1
-  local testtype=$2
-  local extra=""
-
-  yetus_debug "Personality: ${repostatus} ${testtype}"
-
-  clear_personality_queue
-
-  extra="-DPigPatchProcess= "
-
-  case ${testtype} in
-    findbugs)
-      # shellcheck disable=SC2034
-      ANT_FINDBUGSXML="${BASEDIR}/build/test/findbugs/pig-findbugs-report.xml"
-      extra="-Dfindbugs.home=${FINDBUGS_HOME}"
-    ;;
-    compile)
-      extra="${extra} -Djavac.args=-Xlint -Dcompile.c++=yes clean piggybank"
-      ;;
-    javadoc)
-      extra="${extra} -Dforrest.home=${FORREST_HOME}"
-      ;;
-    unit)
-      extra="${extra} -Dtest.junit.output.format=xml -Dcompile.c++=yes -Dtest.output=yes test-core"
-      ;;
-  esac
-
-  # shellcheck disable=SC2086
-  personality_enqueue_module . ${extra}
-}
diff --git a/precommit/src/main/shell/personality/ratis.sh b/precommit/src/main/shell/personality/ratis.sh
deleted file mode 100755
index d3f0ae2..0000000
--- a/precommit/src/main/shell/personality/ratis.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^RATIS-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/incubator-ratis"
-}
diff --git a/precommit/src/main/shell/personality/samza.sh b/precommit/src/main/shell/personality/samza.sh
deleted file mode 100755
index 4e84702..0000000
--- a/precommit/src/main/shell/personality/samza.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all,-checkstyle"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^SAMZA-[0-9]+$'
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://cwiki.apache.org/confluence/display/SAMZA/Contributor's+Corner"
-  # shellcheck disable=SC2034
-  BUILDTOOL=gradle
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/samza"
-}
diff --git a/precommit/src/main/shell/personality/tajo.sh b/precommit/src/main/shell/personality/tajo.sh
deleted file mode 100755
index 90a575f..0000000
--- a/precommit/src/main/shell/personality/tajo.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^TAJO-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/tajo"
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://cwiki.apache.org/confluence/display/TAJO/How+to+Contribute+to+Tajo"
-}
diff --git a/precommit/src/main/shell/personality/tez.sh b/precommit/src/main/shell/personality/tez.sh
deleted file mode 100755
index 36bc426..0000000
--- a/precommit/src/main/shell/personality/tez.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-personality_plugins "all"
-
-## @description  Globals specific to this personality
-## @audience     private
-## @stability    evolving
-function personality_globals
-{
-  # shellcheck disable=SC2034
-  BUILDTOOL=maven
-  #shellcheck disable=SC2034
-  PATCH_BRANCH_DEFAULT=master
-  #shellcheck disable=SC2034
-  JIRA_ISSUE_RE='^TEZ-[0-9]+$'
-  #shellcheck disable=SC2034
-  GITHUB_REPO_DEFAULT="apache/tez"
-  #shellcheck disable=SC2034
-  PATCH_NAMING_RULE="https://cwiki.apache.org/confluence/display/TEZ/How+to+Contribute+to+Tez"
-}
diff --git a/precommit/src/main/shell/test-patch.d/ant.sh b/precommit/src/main/shell/plugins.d/ant.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/ant.sh
rename to precommit/src/main/shell/plugins.d/ant.sh
diff --git a/precommit/src/main/shell/test-patch.d/asflicense.sh b/precommit/src/main/shell/plugins.d/asflicense.sh
similarity index 99%
rename from precommit/src/main/shell/test-patch.d/asflicense.sh
rename to precommit/src/main/shell/plugins.d/asflicense.sh
index 0db5127..4d5a4e2 100755
--- a/precommit/src/main/shell/test-patch.d/asflicense.sh
+++ b/precommit/src/main/shell/plugins.d/asflicense.sh
@@ -71,7 +71,7 @@
 
   start_clock
 
-  personality_modules patch asflicense
+  personality_modules_wrapper patch asflicense
   case ${BUILDTOOL} in
     ant)
       modules_workers patch asflicense releaseaudit
diff --git a/precommit/src/main/shell/test-patch.d/author.sh b/precommit/src/main/shell/plugins.d/author.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/author.sh
rename to precommit/src/main/shell/plugins.d/author.sh
diff --git a/precommit/src/main/shell/test-patch.d/autoconf.sh b/precommit/src/main/shell/plugins.d/autoconf.sh
similarity index 97%
rename from precommit/src/main/shell/test-patch.d/autoconf.sh
rename to precommit/src/main/shell/plugins.d/autoconf.sh
index b5632c4..263c757 100755
--- a/precommit/src/main/shell/test-patch.d/autoconf.sh
+++ b/precommit/src/main/shell/plugins.d/autoconf.sh
@@ -116,7 +116,7 @@
     big_console_header "autoconf verification: ${BUILDMODE}"
   fi
 
-  personality_modules "${repostatus}" autoreconf
+  personality_modules_wrapper "${repostatus}" autoreconf
 
   pushd "${BASEDIR}" >/dev/null || return 1
   echo_and_redirect "${PATCH_DIR}/${repostatus}-autoconf-autoreconf" autoreconf -fi
@@ -144,7 +144,7 @@
     fi
   fi
 
-  personality_modules "${repostatus}" configure
+personality_modules_wrapper "${repostatus}" configure
 
   pushd "${BASEDIR}" >/dev/null || return 1
   #shellcheck disable=SC2086
diff --git a/precommit/src/main/shell/test-patch.d/blanks.sh b/precommit/src/main/shell/plugins.d/blanks.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/blanks.sh
rename to precommit/src/main/shell/plugins.d/blanks.sh
diff --git a/precommit/src/main/shell/test-patch.d/briefreport.sh b/precommit/src/main/shell/plugins.d/briefreport.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/briefreport.sh
rename to precommit/src/main/shell/plugins.d/briefreport.sh
diff --git a/precommit/src/main/shell/test-patch.d/buf.sh b/precommit/src/main/shell/plugins.d/buf.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/buf.sh
rename to precommit/src/main/shell/plugins.d/buf.sh
diff --git a/precommit/src/main/shell/test-patch.d/bugzilla.sh b/precommit/src/main/shell/plugins.d/bugzilla.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/bugzilla.sh
rename to precommit/src/main/shell/plugins.d/bugzilla.sh
diff --git a/precommit/src/main/shell/test-patch.d/cc.sh b/precommit/src/main/shell/plugins.d/cc.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/cc.sh
rename to precommit/src/main/shell/plugins.d/cc.sh
diff --git a/precommit/src/main/shell/test-patch.d/checkmake.sh b/precommit/src/main/shell/plugins.d/checkmake.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/checkmake.sh
rename to precommit/src/main/shell/plugins.d/checkmake.sh
diff --git a/precommit/src/main/shell/test-patch.d/checkstyle.sh b/precommit/src/main/shell/plugins.d/checkstyle.sh
similarity index 98%
rename from precommit/src/main/shell/test-patch.d/checkstyle.sh
rename to precommit/src/main/shell/plugins.d/checkstyle.sh
index 7c656b8..91bee98 100755
--- a/precommit/src/main/shell/test-patch.d/checkstyle.sh
+++ b/precommit/src/main/shell/plugins.d/checkstyle.sh
@@ -371,7 +371,7 @@
 
   start_clock
 
-  personality_modules branch checkstyle
+  personality_modules_wrapper branch checkstyle
   checkstyle_runner branch
   result=$?
   modules_messages branch checkstyle true
@@ -405,7 +405,7 @@
 
   start_clock
 
-  personality_modules patch checkstyle
+personality_modules_wrapper patch checkstyle
   checkstyle_runner patch
   result=$?
 
diff --git a/precommit/src/main/shell/test-patch.d/cmake.sh b/precommit/src/main/shell/plugins.d/cmake.sh
similarity index 98%
rename from precommit/src/main/shell/test-patch.d/cmake.sh
rename to precommit/src/main/shell/plugins.d/cmake.sh
index 84a5387..7e38092 100755
--- a/precommit/src/main/shell/test-patch.d/cmake.sh
+++ b/precommit/src/main/shell/plugins.d/cmake.sh
@@ -154,7 +154,7 @@
     big_console_header "cmake CMakeLists.txt: ${BUILDMODE}"
   fi
 
-  personality_modules "${repostatus}" CMakeLists.txt
+  personality_modules_wrapper "${repostatus}" CMakeLists.txt
 
   modules_workers "${repostatus}" CMakeLists.txt @@@MODULEDIR@@@
   result=$?
diff --git a/precommit/src/main/shell/test-patch.d/codespell.sh b/precommit/src/main/shell/plugins.d/codespell.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/codespell.sh
rename to precommit/src/main/shell/plugins.d/codespell.sh
diff --git a/precommit/src/main/shell/test-patch.d/ctest.sh b/precommit/src/main/shell/plugins.d/ctest.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/ctest.sh
rename to precommit/src/main/shell/plugins.d/ctest.sh
diff --git a/precommit/src/main/shell/test-patch.d/dupname.sh b/precommit/src/main/shell/plugins.d/dupname.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/dupname.sh
rename to precommit/src/main/shell/plugins.d/dupname.sh
diff --git a/precommit/src/main/shell/test-patch.d/github.sh b/precommit/src/main/shell/plugins.d/github.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/github.sh
rename to precommit/src/main/shell/plugins.d/github.sh
diff --git a/precommit/src/main/shell/test-patch.d/gitlab.sh b/precommit/src/main/shell/plugins.d/gitlab.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/gitlab.sh
rename to precommit/src/main/shell/plugins.d/gitlab.sh
diff --git a/precommit/src/main/shell/test-patch.d/golang.sh b/precommit/src/main/shell/plugins.d/golang.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/golang.sh
rename to precommit/src/main/shell/plugins.d/golang.sh
diff --git a/precommit/src/main/shell/test-patch.d/golangci.sh b/precommit/src/main/shell/plugins.d/golangci.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/golangci.sh
rename to precommit/src/main/shell/plugins.d/golangci.sh
diff --git a/precommit/src/main/shell/test-patch.d/gradle.sh b/precommit/src/main/shell/plugins.d/gradle.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/gradle.sh
rename to precommit/src/main/shell/plugins.d/gradle.sh
diff --git a/precommit/src/main/shell/test-patch.d/hadolint.sh b/precommit/src/main/shell/plugins.d/hadolint.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/hadolint.sh
rename to precommit/src/main/shell/plugins.d/hadolint.sh
diff --git a/precommit/src/main/shell/test-patch.d/htmlout.sh b/precommit/src/main/shell/plugins.d/htmlout.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/htmlout.sh
rename to precommit/src/main/shell/plugins.d/htmlout.sh
diff --git a/precommit/src/main/shell/test-patch.d/java.sh b/precommit/src/main/shell/plugins.d/java.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/java.sh
rename to precommit/src/main/shell/plugins.d/java.sh
diff --git a/precommit/src/main/shell/test-patch.d/jira.sh b/precommit/src/main/shell/plugins.d/jira.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/jira.sh
rename to precommit/src/main/shell/plugins.d/jira.sh
diff --git a/precommit/src/main/shell/test-patch.d/jshint.sh b/precommit/src/main/shell/plugins.d/jshint.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/jshint.sh
rename to precommit/src/main/shell/plugins.d/jshint.sh
diff --git a/precommit/src/main/shell/test-patch.d/junit.sh b/precommit/src/main/shell/plugins.d/junit.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/junit.sh
rename to precommit/src/main/shell/plugins.d/junit.sh
diff --git a/precommit/src/main/shell/test-patch.d/make.sh b/precommit/src/main/shell/plugins.d/make.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/make.sh
rename to precommit/src/main/shell/plugins.d/make.sh
diff --git a/precommit/src/main/shell/test-patch.d/markdownlint.sh b/precommit/src/main/shell/plugins.d/markdownlint.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/markdownlint.sh
rename to precommit/src/main/shell/plugins.d/markdownlint.sh
diff --git a/precommit/src/main/shell/test-patch.d/maven.sh b/precommit/src/main/shell/plugins.d/maven.sh
similarity index 99%
rename from precommit/src/main/shell/test-patch.d/maven.sh
rename to precommit/src/main/shell/plugins.d/maven.sh
index 2fc11aa..94c024f 100755
--- a/precommit/src/main/shell/test-patch.d/maven.sh
+++ b/precommit/src/main/shell/plugins.d/maven.sh
@@ -606,7 +606,7 @@
     big_console_header "maven site verification: ${BUILDMODE}"
   fi
 
-  personality_modules "${repostatus}" mvnsite
+  personality_modules_wrapper "${repostatus}" mvnsite
   modules_workers "${repostatus}" mvnsite clean site site:stage
   result=$?
   modules_messages "${repostatus}" mvnsite true
@@ -651,7 +651,7 @@
     big_console_header "maven install: ${BUILDMODE}"
   fi
 
-  personality_modules "${repostatus}" mvninstall
+  personality_modules_wrapper "${repostatus}" mvninstall
   modules_workers "${repostatus}" mvninstall -fae \
     clean install \
     -DskipTests=true -Dmaven.javadoc.skip=true \
diff --git a/precommit/src/main/shell/test-patch.d/nobuild.sh b/precommit/src/main/shell/plugins.d/nobuild.sh
similarity index 89%
rename from precommit/src/main/shell/test-patch.d/nobuild.sh
rename to precommit/src/main/shell/plugins.d/nobuild.sh
index a049f98..83ce8f7 100755
--- a/precommit/src/main/shell/test-patch.d/nobuild.sh
+++ b/precommit/src/main/shell/plugins.d/nobuild.sh
@@ -17,6 +17,7 @@
 # SHELLDOC-IGNORE
 
 # A simple build system that doesn't actually build anything
+# if you are building your own, this file acts as a great template!
 
 add_build_tool nobuild
 
@@ -32,15 +33,15 @@
 
 function nobuild_modules_worker
 {
-  local status=$1
-  local testtype=$2
+  declare status=$1
+  declare testtype=$2
   modules_workers "${status}" "${testtype}"
 }
 
 function nobuild_builtin_personality_modules
 {
-  local status=$1
-  local testtype=$2
+  declare status=$1
+  declare testtype=$2
   yetus_debug "built-in personality for no build system: ${status} ${testtype}"
 
   clear_personality_queue
@@ -51,7 +52,7 @@
 
 function nobuild_builtin_personality_file_tests
 {
-  local filename=$1
+  declare filename=$1
 
   yetus_debug "Using built-in no build system personality_file_tests."
   yetus_debug "    given file ${filename}"
diff --git a/precommit/src/main/shell/test-patch.d/pathlen.sh b/precommit/src/main/shell/plugins.d/pathlen.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/pathlen.sh
rename to precommit/src/main/shell/plugins.d/pathlen.sh
diff --git a/precommit/src/main/shell/test-patch.d/perlcritic.sh b/precommit/src/main/shell/plugins.d/perlcritic.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/perlcritic.sh
rename to precommit/src/main/shell/plugins.d/perlcritic.sh
diff --git a/precommit/src/main/shell/test-patch.d/pylint.sh b/precommit/src/main/shell/plugins.d/pylint.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/pylint.sh
rename to precommit/src/main/shell/plugins.d/pylint.sh
diff --git a/precommit/src/main/shell/test-patch.d/revive.sh b/precommit/src/main/shell/plugins.d/revive.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/revive.sh
rename to precommit/src/main/shell/plugins.d/revive.sh
diff --git a/precommit/src/main/shell/test-patch.d/rubocop.sh b/precommit/src/main/shell/plugins.d/rubocop.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/rubocop.sh
rename to precommit/src/main/shell/plugins.d/rubocop.sh
diff --git a/precommit/src/main/shell/test-patch.d/scala.sh b/precommit/src/main/shell/plugins.d/scala.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/scala.sh
rename to precommit/src/main/shell/plugins.d/scala.sh
diff --git a/precommit/src/main/shell/test-patch.d/shellcheck.sh b/precommit/src/main/shell/plugins.d/shellcheck.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/shellcheck.sh
rename to precommit/src/main/shell/plugins.d/shellcheck.sh
diff --git a/precommit/src/main/shell/test-patch.d/shelldocs.sh b/precommit/src/main/shell/plugins.d/shelldocs.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/shelldocs.sh
rename to precommit/src/main/shell/plugins.d/shelldocs.sh
diff --git a/precommit/src/main/shell/test-patch.d/slack.sh b/precommit/src/main/shell/plugins.d/slack.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/slack.sh
rename to precommit/src/main/shell/plugins.d/slack.sh
diff --git a/precommit/src/main/shell/test-patch.d/spotbugs.sh b/precommit/src/main/shell/plugins.d/spotbugs.sh
similarity index 99%
rename from precommit/src/main/shell/test-patch.d/spotbugs.sh
rename to precommit/src/main/shell/plugins.d/spotbugs.sh
index 8c1c63f..b47a8ea 100755
--- a/precommit/src/main/shell/test-patch.d/spotbugs.sh
+++ b/precommit/src/main/shell/plugins.d/spotbugs.sh
@@ -139,7 +139,7 @@
   declare retval
 
 
-  personality_modules "${name}" "${SPOTBUGS_MODE}"
+  personality_modules_wrapper "${name}" "${SPOTBUGS_MODE}"
 
   "${BUILDTOOL}_modules_worker" "${name}" "${SPOTBUGS_MODE}"
 
diff --git a/precommit/src/main/shell/test-patch.d/tap.sh b/precommit/src/main/shell/plugins.d/tap.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/tap.sh
rename to precommit/src/main/shell/plugins.d/tap.sh
diff --git a/precommit/src/main/shell/test-patch.d/test4tests.sh b/precommit/src/main/shell/plugins.d/test4tests.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/test4tests.sh
rename to precommit/src/main/shell/plugins.d/test4tests.sh
diff --git a/precommit/src/main/shell/test-patch.d/unitveto.sh b/precommit/src/main/shell/plugins.d/unitveto.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/unitveto.sh
rename to precommit/src/main/shell/plugins.d/unitveto.sh
diff --git a/precommit/src/main/shell/test-patch.d/xml.sh b/precommit/src/main/shell/plugins.d/xml.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/xml.sh
rename to precommit/src/main/shell/plugins.d/xml.sh
diff --git a/precommit/src/main/shell/test-patch.d/yamllint.sh b/precommit/src/main/shell/plugins.d/yamllint.sh
similarity index 100%
rename from precommit/src/main/shell/test-patch.d/yamllint.sh
rename to precommit/src/main/shell/plugins.d/yamllint.sh
diff --git a/precommit/src/main/shell/smart-apply-patch.sh b/precommit/src/main/shell/smart-apply-patch.sh
index ede728e..430f1ac 100755
--- a/precommit/src/main/shell/smart-apply-patch.sh
+++ b/precommit/src/main/shell/smart-apply-patch.sh
@@ -129,8 +129,8 @@
   yetus_add_option "--personality=<file>" "The personality file to load"
   yetus_add_option "--plugins=<list>" "Specify which plug-ins to add/delete (comma delimited; use 'all' for all found)"
   yetus_add_option "--project=<name>" "The short name for project currently using test-patch (default 'yetus')"
-  yetus_add_option "--skip-system-plugins" "Do not load plugins from ${BINDIR}/test-patch.d"
-  yetus_add_option "--user-plugins=<dir>" "A directory of user provided plugins. see test-patch.d for examples (default empty)"
+  yetus_add_option "--skip-system-plugins" "Do not load plugins from ${BINDIR}/plugins.d"
+  yetus_add_option "--user-plugins=<dir>" "A directory of user provided plugins. (default ${USER_PLUGIN_DIR})"
   yetus_add_option "--version" "Print release version information and exit"
   yetus_generic_columnprinter "${YETUS_OPTION_USAGE[@]}"
   yetus_reset_usage
diff --git a/precommit/src/main/shell/test-patch.sh b/precommit/src/main/shell/test-patch.sh
index 7dfeaf8..f1afd89 100755
--- a/precommit/src/main/shell/test-patch.sh
+++ b/precommit/src/main/shell/test-patch.sh
@@ -681,13 +681,13 @@
   yetus_add_option "--resetrepo" "Forcibly clean the repo"
   yetus_add_option "--run-tests" "Run all relevant tests below the base directory"
   yetus_add_option "--skip-dirs=<list>" "Skip following directories for module finding"
-  yetus_add_option "--skip-system-plugins" "Do not load plugins from ${BINDIR}/test-patch.d"
+  yetus_add_option "--skip-system-plugins" "Do not load plugins from ${BINDIR}/plugins.d"
   yetus_add_option "--summarize=<bool>" "Allow tests to summarize results"
   yetus_add_option "--test-parallel=<bool>" "Run multiple tests in parallel (default false in developer mode, true in Jenkins mode)"
   yetus_add_option "--test-threads=<int>" "Number of tests to run in parallel (default defined in ${PROJECT_NAME} build)"
   yetus_add_option "--tests-filter=<list>" "Lists of tests to turn failures into warnings"
   yetus_add_option "--unit-test-filter-file=<file>" "The unit test filter file to load"
-  yetus_add_option "--user-plugins=<dir>" "A directory of user provided plugins. see test-patch.d for examples (default empty)"
+  yetus_add_option "--user-plugins=<dir>" "A directory of user provided plugins. (default: ${USER_PLUGIN_DIR})"
   yetus_add_option "--version" "Print release version information and exit"
 
   yetus_generic_columnprinter "${YETUS_OPTION_USAGE[@]}"
@@ -997,14 +997,6 @@
     start_clock
   fi
 
-  # we need absolute dir for ${BASEDIR}
-  cd "${STARTINGDIR}" || cleanup_and_exit 1
-  BASEDIR=$(yetus_abs "${BASEDIR}")
-
-  if [[ -n ${USER_PATCH_DIR} ]]; then
-    PATCH_DIR="${USER_PATCH_DIR}"
-  fi
-
   # we need absolute dir for PATCH_DIR
   cd "${STARTINGDIR}" || cleanup_and_exit 1
   if [[ ! -d ${PATCH_DIR} ]]; then
@@ -1424,7 +1416,7 @@
 
   for i in "${CHANGED_FILES[@]}"; do
     yetus_debug "Determining needed tests for ${i}"
-    personality_file_tests "${i}"
+    personality_file_tests_wrapper "${i}"
 
     for plugin in "${TESTTYPES[@]}" ${BUILDTOOL}; do
       if declare -f "${plugin}_filefilter" >/dev/null 2>&1; then
@@ -2129,7 +2121,7 @@
       jdk=${jdk// /}
     fi
 
-    personality_modules patch unit
+    personality_modules_wrapper patch unit
     "${BUILDTOOL}_modules_worker" patch unit
 
     ((result=result+$?))
@@ -2522,7 +2514,7 @@
       JAVA_HOME=${jdkindex}
     fi
 
-    personality_modules branch "${testtype}"
+    personality_modules_wrapper branch "${testtype}"
     "${BUILDTOOL}_modules_worker" branch "${testtype}"
 
     ((result=result + $?))
@@ -2763,7 +2755,7 @@
     fi
 
     if [[ ${need2run} = true ]]; then
-      personality_modules "${codebase}" "${testtype}"
+      personality_modules_wrapper "${codebase}" "${testtype}"
       "${BUILDTOOL}_modules_worker" "${codebase}" "${testtype}"
 
       if [[ ${UNSUPPORTED_TEST} = true ]]; then
@@ -2839,7 +2831,7 @@
   declare multijdkmode=${2:-false}
   declare jdkindex=0
 
-  personality_modules "${codebase}" compile
+  personality_modules_wrapper "${codebase}" compile
   "${BUILDTOOL}_modules_worker" "${codebase}" compile
   modules_messages "${codebase}" compile true
 
@@ -2998,7 +2990,7 @@
     fi
   done
 
-  personality_modules branch distclean
+  personality_modules_wrapper branch distclean
   "${BUILDTOOL}_modules_worker" branch distclean
   (( result = result + $? ))