yetus-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bus...@apache.org
Subject [06/10] yetus git commit: YETUS-162, YETUS-81
Date Wed, 18 Nov 2015 08:07:58 GMT
http://git-wip-us.apache.org/repos/asf/yetus/blob/1a20466f/documentation/in-progress/precommit-advanced/index.html
----------------------------------------------------------------------
diff --git a/documentation/in-progress/precommit-advanced/index.html b/documentation/in-progress/precommit-advanced/index.html
new file mode 100644
index 0000000..1ffab94
--- /dev/null
+++ b/documentation/in-progress/precommit-advanced/index.html
@@ -0,0 +1,356 @@
+<!---
+  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.
+-->
+
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Apache Yetus</title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+		    <meta name="description" content="">
+		    <meta name="author" content="">
+
+		    <link href="/assets/css/bootstrap.css" rel="stylesheet">
+		    <link href="/assets/css/bootstrap-theme.css" rel="stylesheet">
+                    <link href="/assets/css/font-awesome.css" rel="stylesheet">
+
+		    <!-- JS -->
+		    <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
+		    <script type="text/javascript" src="/assets/js/bootstrap.js"></script>
+	</head>
+    <body>
+      <div class="navbar navbar-inverse navbar-static-top" role="navigation">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="img-responsive pull-left" href="/">
+                <img style="max-height: 40px; margin-top: 5px; margin-bottom: 5px;" src="/assets/img/yetus_logo.png" alt="Apache Yetus logo" />
+            </a>
+        </div>
+        <div class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="/downloads/">Downloads</a>
+                <li><a href="/documentation/in-progress/">Documentation</a>
+                </li>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Get Involved <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/mailinglists"><i class="fa fa-commenting"></i> Mailing Lists</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/YETUS"><i class="fa fa-bug"></i> JIRA (Bugs)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=yetus"><i class="fa fa-code"></i> Source (Apache)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/yetus"><i class="fa fa-github-alt"></i> Source (GitHub)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute"><i class="fa fa-code-fork"></i> Contributing</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheYetus"><i class="fa fa-twitter"></i> @ApacheYetus</a>
+                        </li>
+                    </ul>
+                </li>
+                <li>
+                    <li class="dropdown">
+                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
+                        <ul class="dropdown-menu" role="menu">
+                            <li><a href="http://www.apache.org">Apache Homepage</a>
+                            </li>
+                            <li><a href="http://www.apache.org/licenses/">Apache License</a>
+                            </li>
+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+                            </li>
+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a>
+                            </li>
+                            <li><a href="http://www.apache.org/security/">Security</a>
+                            </li>
+                        </ul>
+                    </li>
+                </li>
+            </ul>
+        </div>
+        <!--/.nav-collapse -->
+    </div>
+</div>
+
+      <div class="container">
+        <!---
+  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.
+-->
+
+<h1 id="test-patch">test-patch</h1>
+
+<ul>
+<li><a href="#Docker_Support">Docker Support</a></li>
+<li><a href="#Plug-ins">Plug-ins</a></li>
+<li><a href="#Personalities">Personalities</a></li>
+<li><a href="#Important_Variables">Important Variables</a></li>
+</ul>
+
+<h1 id="docker-support">Docker Support</h1>
+
+<p>By default, test-patch runs in the same shell where it was launched.  It can alternatively use Docker to launch itself in a container.  This is particularly useful if running under a QA environment that does not provide all the necessary binaries. For example, if the patch requires a newer version of Java than what is installed on a Jenkins instance.</p>
+
+<p>The <code>--docker</code> parameter tells test-patch to run in Docker mode. The <code>--dockerfile</code> parameter allows one to provide a custom Dockerfile. The Dockerfile should contain all of the necessary binaries and tooling needed to run the test.  test-patch will copy this file up until the text &ldquo;YETUS CUT HERE&rdquo; to a different directory and then append its necessary hooks to re-launch itself prior to executing docker.</p>
+
+<p>NOTE: If you are using Boot2Docker, you must use directories under /Users (OSX) or C:\Users (Windows) as the base and patchprocess directories (specified by the &ndash;basedir and &ndash;patch-dir options respectively), because automatically mountable directories are limited to them. See <a href="https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume">the Docker documentation</a>.</p>
+
+<p>Dockerfile images will be named with a test-patch prefix and suffix with either a date or a git commit hash. By using this information, test-patch will automatically manage broken/stale container images that are hanging around if it is run in &ndash;jenkins mode.  In this way, if Docker fails to build the image, the disk space should eventually be cleaned and returned back to the system.</p>
+
+<h1 id="plug-ins">Plug-ins</h1>
+
+<p>test-patch allows one to add to its basic feature set via plug-ins.  There is a directory called test-patch.d off of 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.</p>
+
+<h2 id="common-plug-in-functions">Common Plug-in Functions</h2>
+
+<p>Every plug-in must have one line in order to be recognized, usually an &lsquo;add&rsquo; statement.  Test plug-ins, for example, have this statement:</p>
+<pre class="highlight shell"><code>add_test_type &lt;pluginname&gt;
+</code></pre>
+
+<p>This function call registers the <code>pluginname</code> so that test-patch knows that it exists.  Plug-in names must be unique across all the different plug-in types.  Additionally, the &#39;all&rsquo; plug-in is reserved.  The <code>pluginname</code> also acts as the key to the custom functions that you can define. For example:</p>
+<pre class="highlight shell"><code><span class="k">function </span>pluginname_filefilter
+</code></pre>
+
+<p>defines the filefilter for the <code>pluginname</code> plug-in.</p>
+
+<p>Similarly, there are other functions that may be defined during the test-patch run:</p>
+<pre class="highlight plaintext"><code>HINT: It is recommended to make the pluginname relatively small, 10 characters at the most.  Otherwise, the ASCII output table may be skewed.
+</code></pre>
+
+<ul>
+<li><p>pluginname_initialize</p>
+
+<ul>
+<li>After argument parsing and prior to any other work, the initialize step allows a plug-in to do any precursor work, set internal defaults, etc.</li>
+</ul></li>
+<li><p>pluginname_usage</p>
+
+<ul>
+<li>executed when the help message is displayed. This is used to display the plug-in specific options for the user.</li>
+</ul></li>
+<li><p>pluginname_parse_args</p>
+
+<ul>
+<li>executed prior to any other above functions except for pluginname_usage. This is useful for parsing the arguments passed from the user and setting up the execution environment.</li>
+</ul></li>
+<li><p>pluginname_precheck</p>
+
+<ul>
+<li>executed prior to the patch being applied but after the git repository is setup.  Returning a fail status here will exit test-patch.</li>
+</ul></li>
+<li><p>pluginname_precompile</p>
+
+<ul>
+<li>executed prior to the compilation part of the lifecycle. This is useful for doing setup work required by the compilation process.</li>
+</ul></li>
+<li><p>pluginname_compile</p>
+
+<ul>
+<li>executed immediately after the actual compilation. This is step is intended to be used to verify the results and add extra checking of the compile phase and it&rsquo;s stdout/stderr.</li>
+</ul></li>
+<li><p>pluginname_postcompile</p>
+
+<ul>
+<li>This step happens after the compile phase.</li>
+</ul></li>
+<li><p>pluginname_rebuild</p>
+
+<ul>
+<li>Any non-unit tests that require the source to be rebuilt in a destructive way should be run here.</li>
+</ul></li>
+</ul>
+
+<h2 id="plug-in-importation">Plug-in Importation</h2>
+
+<p>Plug-ins are imported from several key directories:</p>
+
+<ul>
+<li><p>core.d is an internal-to-Yetus directory that first loads the basic Yetus library, followed by the common routines used by all of the precommit shell code.  This order is dictated by prefixing the plug-in files with a number.  Other files in this directory are loaded in shell collated order.</p></li>
+<li><p>personality contains bundled personalities for various projects.  These will be imported individually based upon either a project name or if specifically identified with the <code>--personality</code> flag.</p></li>
+<li><p>test-patch.d contains all of the optional, bundled plug-ins.  These are imported last and in shell collated order.</p></li>
+</ul>
+
+<p>If the <code>--skip-system-plugins</code> flag is passed, then only core.d is imported.</p>
+
+<h2 id="test-plug-ins">Test Plug-ins</h2>
+
+<p>Plug-ins geared towards independent tests are registed via:</p>
+<pre class="highlight shell"><code>add_test_type &lt;pluginname&gt;
+</code></pre>
+
+<ul>
+<li><p>pluginname_filefilter</p>
+
+<ul>
+<li>executed while determine which files trigger which tests.  This function should use <code>add_test pluginname</code> to add the plug-in to the test list.</li>
+</ul></li>
+<li><p>pluginname_tests</p>
+
+<ul>
+<li>executed after the unit tests have completed.</li>
+</ul></li>
+</ul>
+
+<h1 id="personalities">Personalities</h1>
+
+<h2 id="configuring-for-other-projects">Configuring for Other Projects</h2>
+
+<p>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 <code>personality</code> should be added that enacts these custom rules.</p>
+
+<p>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.</p>
+
+<p>There can be only <strong>one</strong> of each personality function defined.</p>
+
+<h2 id="global-definitions">Global Definitions</h2>
+
+<p>Globals for personalities should be defined in the <code>personality_globals</code> function.  This function is called <em>after</em> the other plug-ins have been imported.  This allows one to configure any settings for plug-ins that have been imported safely:</p>
+<pre class="highlight shell"><code>funciton personality_globals
+<span class="o">{</span>
+  <span class="nv">PATCH_BRANCH_DEFAULT</span><span class="o">=</span>master
+  <span class="nv">GITHUB_REPO</span><span class="o">=</span><span class="s2">"apache/yetus"</span>
+<span class="o">}</span>
+</code></pre>
+
+<h2 id="test-determination">Test Determination</h2>
+
+<p>The <code>personality_file_tests</code> function determines which tests to turn on based upon the file name.  It is relatively simple.  For example, to turn on a full suite of tests for Java files:</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_file_tests
+<span class="o">{</span>
+  <span class="nb">local </span><span class="nv">filename</span><span class="o">=</span><span class="nv">$1</span>
+
+  <span class="k">if</span> <span class="o">[[</span> <span class="k">${</span><span class="nv">filename</span><span class="k">}</span> <span class="o">=</span>~ <span class="se">\.</span>java<span class="nv">$ </span><span class="o">]]</span>; <span class="k">then
+    </span>add_test findbugs
+    add_test javac
+    add_test javadoc
+    add_test mvninstall
+    add_test unit
+  <span class="k">fi</span>
+
+<span class="o">}</span>
+</code></pre>
+
+<p>The <code>add_test</code> function is used to activate the standard tests.  Additional plug-ins (such as checkstyle), will get queried on their own.</p>
+
+<h2 id="module-amp-profile-determination">Module &amp; Profile Determination</h2>
+
+<p>Once the tests are determined, it is now time to pick which <a href="precommit-glossary.md#genericoutside-definitions">modules</a> should get used.  That&rsquo;s the job of the <code>personality_modules</code> function.</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_modules
+<span class="o">{</span>
+
+    clear_personality_queue
+
+...
+
+    personality_enqueue_module &lt;module&gt; &lt;flags&gt;
+
+<span class="o">}</span>
+</code></pre>
+
+<p>It takes exactly two parameters <code>repostatus</code> and <code>testtype</code>.</p>
+
+<p>The <code>repostatus</code> parameter tells the <code>personality</code> function exactly what state the source repository is in.  It can only be in one of two states:  <code>branch</code> or <code>patch</code>.  <code>branch</code> means the patch has not been applied.  The <code>patch</code> state is after the patch has been applied.</p>
+
+<p>The <code>testtype</code> state tells the personality exactly which test is about to be executed.</p>
+
+<p>In order to communicate back to test-patch, there are two functions for the personality to use.</p>
+
+<p>The first is <code>clear_personality_queue</code>. This removes the previous test&rsquo;s configuration so that a new module queue may be built. Custom <code>personality_modules</code> will almost always want to do this as the first action.</p>
+
+<p>The second is <code>personality_enqueue_module</code>.  This function takes two parameters.  The first parameter is the name of the module to add to this test&rsquo;s queue.  The second parameter is an option list of additional flags to pass to Maven when processing it. <code>personality_enqueue_module</code> may be called as many times as necessary for your project.</p>
+<pre class="highlight plaintext"><code>NOTE: A module name of . signifies the root of the repository.
+</code></pre>
+
+<p>For example, let&rsquo;s say your project uses a special configuration to skip unit tests (-DskipTests).  Running unit tests during a javadoc build isn&rsquo;t very useful and wastes a lot of time. We can write a simple personality check to disable the unit tests:</p>
+<pre class="highlight shell"><code><span class="k">function </span>personality_modules
+<span class="o">{</span>
+    <span class="nb">local </span><span class="nv">repostatus</span><span class="o">=</span><span class="nv">$1</span>
+    <span class="nb">local </span><span class="nv">testtype</span><span class="o">=</span><span class="nv">$2</span>
+
+    <span class="k">if</span> <span class="o">[[</span> <span class="k">${</span><span class="nv">testtype</span><span class="k">}</span> <span class="o">==</span> <span class="s1">'javadoc'</span> <span class="o">]]</span>; <span class="k">then
+        </span>personality_enqueue_module . -DskipTests
+        <span class="k">return
+    fi</span>
+    ...
+
+</code></pre>
+
+<p>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.</p>
+
+<h2 id="enabling-plug-ins">Enabling Plug-ins</h2>
+
+<p>Personalities can set the base list of plug-ins to enable and disable for their project via the <code>personality_plugins</code> function. Just call it with the same pattern as the <code>--plugins</code> command line option:</p>
+<pre class="highlight shell"><code>personality_plugins <span class="s2">"all,-checkstyle,-findbugs,-asflicense"</span>
+</code></pre>
+
+<p>This list is used if the user does not provide a list of plug-ins.</p>
+
+<h1 id="important-variables">Important Variables</h1>
+
+<p>There are a handful of extremely important system variables that make life easier for personality and plug-in writers.  Other variables may be provided by individual plug-ins.  Check their development documentation for more information.</p>
+
+<ul>
+<li><p>BUILD_NATIVE will be set to true if the system has requested that non-JVM-based code be built (e.g., JNI or other compiled C code). Under Jenkins, this is always true.</p></li>
+<li><p>BUILDTOOL specifies which tool is currently being used to drive compilation.  Additionally, many build tools define xyz_ARGS to pass on to the build tool command line. (e.g., MAVEN_ARGS if maven is in use).  Projects may set this in their personality.  NOTE: today, only one build tool at a time is supported.  This may change in the future.</p></li>
+<li><p>CHANGED_FILES is a list of all files that appear to be added, deleted, or modified in the patch.</p></li>
+<li><p>CHANGED_MODULES is a list of all modules that house all of the CHANGED_FILES.  Be aware that the root of the source tree is reported as &rsquo;.&rsquo;.</p></li>
+<li><p>GITHUB_REPO is to help test-patch when talking to Github.  If test-patch is given just a number on the command line, it will default to using this repo to determine the pull request.</p></li>
+<li><p>HOW_TO_CONTRIBUTE should be a URL that points to a project&rsquo;s on-boarding documentation for new users. Currently, it is used to suggest a review of patch naming guidelines. Since this should be project specific information, it is useful to set in a project&rsquo;s personality.</p></li>
+<li><p>JIRA_ISSUE_RE is to help test-patch when talking to JIRA.  It helps determine if the given project is appropriate for the given JIRA issue.</p></li>
+<li><p>MODULE and other MODULE_* are arrays that contain which modules, the status, etc, to be operated upon. These should be treated as read-only by plug-ins.</p></li>
+<li><p>PATCH_BRANCH_DEFAULT is the name of the branch in the git repo that is considered the master.  This is useful to set in personalities.</p></li>
+<li><p>PATCH_DIR is the name of the temporary directory that houses test-patch artifacts (such as logs and the patch file itself)</p></li>
+<li><p>TEST_PARALLEL if parallel unit tests have been requested. Project personalities are responsible for actually enabling or ignoring the request. TEST_THREADS is the number of threads that have been requested to run in parallel.</p></li>
+</ul>
+
+	  </div>
+      <div class="container">
+    <hr>
+    <footer class="footer">
+        <div class="row-fluid">
+            <div class="span12 text-left">
+                            <div class="span12">
+                Copyright 2008-2015 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Yetus and the Apache feather logo are trademarks of The Apache Software Foundation.
+                            </div>
+            </div>
+
+        </div>
+
+    </footer>
+</div>
+
+	</body>
+</html>

http://git-wip-us.apache.org/repos/asf/yetus/blob/1a20466f/documentation/in-progress/precommit-apidocs/core/index.html
----------------------------------------------------------------------
diff --git a/documentation/in-progress/precommit-apidocs/core/index.html b/documentation/in-progress/precommit-apidocs/core/index.html
new file mode 100644
index 0000000..e67b844
--- /dev/null
+++ b/documentation/in-progress/precommit-apidocs/core/index.html
@@ -0,0 +1,1238 @@
+<!---
+  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.
+-->
+
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Apache Yetus</title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+		    <meta name="description" content="">
+		    <meta name="author" content="">
+
+		    <link href="/assets/css/bootstrap.css" rel="stylesheet">
+		    <link href="/assets/css/bootstrap-theme.css" rel="stylesheet">
+                    <link href="/assets/css/font-awesome.css" rel="stylesheet">
+
+		    <!-- JS -->
+		    <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
+		    <script type="text/javascript" src="/assets/js/bootstrap.js"></script>
+	</head>
+    <body>
+      <div class="navbar navbar-inverse navbar-static-top" role="navigation">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="img-responsive pull-left" href="/">
+                <img style="max-height: 40px; margin-top: 5px; margin-bottom: 5px;" src="/assets/img/yetus_logo.png" alt="Apache Yetus logo" />
+            </a>
+        </div>
+        <div class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="/downloads/">Downloads</a>
+                <li><a href="/documentation/in-progress/">Documentation</a>
+                </li>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Get Involved <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/mailinglists"><i class="fa fa-commenting"></i> Mailing Lists</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/YETUS"><i class="fa fa-bug"></i> JIRA (Bugs)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=yetus"><i class="fa fa-code"></i> Source (Apache)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/yetus"><i class="fa fa-github-alt"></i> Source (GitHub)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute"><i class="fa fa-code-fork"></i> Contributing</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheYetus"><i class="fa fa-twitter"></i> @ApacheYetus</a>
+                        </li>
+                    </ul>
+                </li>
+                <li>
+                    <li class="dropdown">
+                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
+                        <ul class="dropdown-menu" role="menu">
+                            <li><a href="http://www.apache.org">Apache Homepage</a>
+                            </li>
+                            <li><a href="http://www.apache.org/licenses/">Apache License</a>
+                            </li>
+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+                            </li>
+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a>
+                            </li>
+                            <li><a href="http://www.apache.org/security/">Security</a>
+                            </li>
+                        </ul>
+                    </li>
+                </li>
+            </ul>
+        </div>
+        <!--/.nav-collapse -->
+    </div>
+</div>
+
+      <div class="container">
+        <!---
+# 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.
+-->
+
+<ul>
+<li>Public/Stable/Replaceable
+
+<ul>
+<li><a href="#add_bugsystem">add_bugsystem</a></li>
+<li><a href="#add_build_tool">add_build_tool</a></li>
+<li><a href="#add_test">add_test</a></li>
+<li><a href="#add_test_format">add_test_format</a></li>
+<li><a href="#add_test_type">add_test_type</a></li>
+<li><a href="#delete_bugsystem">delete_bugsystem</a></li>
+<li><a href="#delete_build_tool">delete_build_tool</a></li>
+<li><a href="#delete_test">delete_test</a></li>
+<li><a href="#delete_test_format">delete_test_format</a></li>
+<li><a href="#delete_test_type">delete_test_type</a></li>
+<li><a href="#personality_plugins">personality_plugins</a></li>
+<li><a href="#verify_needed_test">verify_needed_test</a></li>
+<li><a href="#verify_plugin_enabled">verify_plugin_enabled</a></li>
+</ul></li>
+<li>Public/Stable/Not Replaceable
+
+<ul>
+<li><a href="#common_defaults">common_defaults</a></li>
+<li><a href="#patchfile_verify_zero">patchfile_verify_zero</a></li>
+<li><a href="#yetus_add_entry">yetus_add_entry</a></li>
+<li><a href="#yetus_debug">yetus_debug</a></li>
+<li><a href="#yetus_delete_entry">yetus_delete_entry</a></li>
+<li><a href="#yetus_error">yetus_error</a></li>
+<li><a href="#yetus_run_and_redirect">yetus_run_and_redirect</a></li>
+<li><a href="#yetus_verify_entry">yetus_verify_entry</a></li>
+</ul></li>
+<li>Public/Evolving/Not Replaceable
+
+<ul>
+<li><a href="#list_plugins">list_plugins</a></li>
+</ul></li>
+<li>None/None/Not Replaceable
+
+<ul>
+<li><a href="#personality_file_tests">personality_file_tests</a></li>
+<li><a href="#personality_modules">personality_modules</a></li>
+</ul></li>
+<li>Private/Evolving/Not Replaceable
+
+<ul>
+<li><a href="#generic_locate_patch">generic_locate_patch</a></li>
+<li><a href="#guess_patch_file">guess_patch_file</a></li>
+</ul></li>
+</ul>
+
+<hr>
+
+<h2 id="public-stable-replaceable">Public/Stable/Replaceable</h2>
+
+<h3 id="add_bugsystem"><code>add_bugsystem</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>add_bugsystem bugsystem
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Add the given bugsystem type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="add_build_tool"><code>add_build_tool</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>add_build_tool build tool
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Add the given build tool type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="add_test"><code>add_test</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>add_test test
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Add the given test type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="add_test_format"><code>add_test_format</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>add_test_format test format
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Add the given test format type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="add_test_type"><code>add_test_type</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>add_test_type plugin
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Add the given test type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="delete_bugsystem"><code>delete_bugsystem</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>delete_bugsystem bugsystem
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Remove the given bugsystem type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="delete_build_tool"><code>delete_build_tool</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>delete_build_tool build tool
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Remove the given build tool type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="delete_test"><code>delete_test</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>delete_test test
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Remove the given test type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="delete_test_format"><code>delete_test_format</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>delete_test_format test format
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Remove the given test format type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="delete_test_type"><code>delete_test_type</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>delete_test_type plugin
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Remove the given test type</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="personality_plugins"><code>personality_plugins</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>personality_plugins plug-in list string
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Personality-defined plug-in list</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="verify_needed_test"><code>verify_needed_test</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>verify_needed_test test
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Verify if a given test was requested</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>1 = yes</p>
+
+<p>0 = no</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h3 id="verify_plugin_enabled"><code>verify_plugin_enabled</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>verify_plugin_enabled test
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Determine if a plugin was enabeld by the user ENABLED_PLUGINS must be defined</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">Yes</td>
+</tr>
+</tbody></table>
+
+<h2 id="public-stable-not-replaceable">Public/Stable/Not Replaceable</h2>
+
+<h3 id="common_defaults"><code>common_defaults</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>common_defaults
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Setup the default global variables</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h3 id="patchfile_verify_zero"><code>patchfile_verify_zero</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>patchfile_verify_zero log filename
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>if patch-level zero, then verify we aren&rsquo;t just adding files</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<h2 id="returns">@returns      $?</h2>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h3 id="yetus_add_entry"><code>yetus_add_entry</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>yetus_add_entry
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Given variable $1 add $2 to it</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h3 id="yetus_debug"><code>yetus_debug</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>yetus_debug string
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Print a message to stderr if &ndash;debug is turned on</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h3 id="yetus_delete_entry"><code>yetus_delete_entry</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>yetus_delete_entry
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Given variable $1 delete $2 from it</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h3 id="yetus_error"><code>yetus_error</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>yetus_error string
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Print a message to stderr</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h3 id="yetus_run_and_redirect"><code>yetus_run_and_redirect</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>yetus_run_and_redirect filename command [..]
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>run the command, sending stdout and stderr to the given filename</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<h2 id="returns">@returns      $?</h2>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h3 id="yetus_verify_entry"><code>yetus_verify_entry</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>yetus_verify_entry
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Given variable $1 determine if $2 is in it</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<h2 id="returns-1-yes-0-no">@returns      1 = yes, 0 = no</h2>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Stable</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h2 id="public-evolving-not-replaceable">Public/Evolving/Not Replaceable</h2>
+
+<h3 id="list_plugins"><code>list_plugins</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>list_plugins
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>List all installed plug-ins, regardless of whether they have been enabled</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Public</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Evolving</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">No</td>
+</tr>
+</tbody></table>
+
+<h2 id="none-none-not-replaceable">None/None/Not Replaceable</h2>
+
+<h3 id="personality_file_tests"><code>personality_file_tests</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>personality_file_tests
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>None</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">None</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">None</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">None</td>
+</tr>
+</tbody></table>
+
+<h3 id="personality_modules"><code>personality_modules</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>personality_modules
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>None</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>Nothing</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">None</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">None</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">None</td>
+</tr>
+</tbody></table>
+
+<h2 id="private-evolving-not-replaceable">Private/Evolving/Not Replaceable</h2>
+
+<h3 id="generic_locate_patch"><code>generic_locate_patch</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>generic_locate_patch patchloc output
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Use curl to download the patch as a last resort</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>0 got something</p>
+
+<p>1 error</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Private</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Evolving</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">None</td>
+</tr>
+</tbody></table>
+
+<h3 id="guess_patch_file"><code>guess_patch_file</code></h3>
+
+<ul>
+<li>Synopsis</li>
+</ul>
+<pre class="highlight plaintext"><code>guess_patch_file path to patch file to test
+</code></pre>
+
+<ul>
+<li>Description</li>
+</ul>
+
+<p>Given a possible patch file, guess if it&rsquo;s a patch file only using the more intense verify if we really need to</p>
+
+<ul>
+<li>Returns</li>
+</ul>
+
+<p>0 we think it&rsquo;s a patch file</p>
+
+<p>1 we think it&rsquo;s not a patch file</p>
+
+<table><thead>
+<tr>
+<th style="text-align: left">Classification</th>
+<th style="text-align: left">Level</th>
+</tr>
+</thead><tbody>
+<tr>
+<td style="text-align: left">Audience</td>
+<td style="text-align: left">Private</td>
+</tr>
+<tr>
+<td style="text-align: left">Stability</td>
+<td style="text-align: left">Evolving</td>
+</tr>
+<tr>
+<td style="text-align: left">Replaceable</td>
+<td style="text-align: left">None</td>
+</tr>
+</tbody></table>
+
+	  </div>
+      <div class="container">
+    <hr>
+    <footer class="footer">
+        <div class="row-fluid">
+            <div class="span12 text-left">
+                            <div class="span12">
+                Copyright 2008-2015 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Yetus and the Apache feather logo are trademarks of The Apache Software Foundation.
+                            </div>
+            </div>
+
+        </div>
+
+    </footer>
+</div>
+
+	</body>
+</html>

http://git-wip-us.apache.org/repos/asf/yetus/blob/1a20466f/documentation/in-progress/precommit-apidocs/index.html
----------------------------------------------------------------------
diff --git a/documentation/in-progress/precommit-apidocs/index.html b/documentation/in-progress/precommit-apidocs/index.html
new file mode 100644
index 0000000..ab0c92b
--- /dev/null
+++ b/documentation/in-progress/precommit-apidocs/index.html
@@ -0,0 +1,143 @@
+<!---
+  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.
+-->
+
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Apache Yetus</title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+		    <meta name="description" content="">
+		    <meta name="author" content="">
+
+		    <link href="/assets/css/bootstrap.css" rel="stylesheet">
+		    <link href="/assets/css/bootstrap-theme.css" rel="stylesheet">
+                    <link href="/assets/css/font-awesome.css" rel="stylesheet">
+
+		    <!-- JS -->
+		    <script type="text/javascript" src="/assets/js/jquery-2.1.4.min.js"></script>
+		    <script type="text/javascript" src="/assets/js/bootstrap.js"></script>
+	</head>
+    <body>
+      <div class="navbar navbar-inverse navbar-static-top" role="navigation">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="img-responsive pull-left" href="/">
+                <img style="max-height: 40px; margin-top: 5px; margin-bottom: 5px;" src="/assets/img/yetus_logo.png" alt="Apache Yetus logo" />
+            </a>
+        </div>
+        <div class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="/downloads/">Downloads</a>
+                <li><a href="/documentation/in-progress/">Documentation</a>
+                </li>
+                <li class="dropdown">
+                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Get Involved <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/mailinglists"><i class="fa fa-commenting"></i> Mailing Lists</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/YETUS"><i class="fa fa-bug"></i> JIRA (Bugs)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=yetus"><i class="fa fa-code"></i> Source (Apache)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/yetus"><i class="fa fa-github-alt"></i> Source (GitHub)</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute"><i class="fa fa-code-fork"></i> Contributing</a>
+                        </li>
+                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheYetus"><i class="fa fa-twitter"></i> @ApacheYetus</a>
+                        </li>
+                    </ul>
+                </li>
+                <li>
+                    <li class="dropdown">
+                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
+                        <ul class="dropdown-menu" role="menu">
+                            <li><a href="http://www.apache.org">Apache Homepage</a>
+                            </li>
+                            <li><a href="http://www.apache.org/licenses/">Apache License</a>
+                            </li>
+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+                            </li>
+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a>
+                            </li>
+                            <li><a href="http://www.apache.org/security/">Security</a>
+                            </li>
+                        </ul>
+                    </li>
+                </li>
+            </ul>
+        </div>
+        <!--/.nav-collapse -->
+    </div>
+</div>
+
+      <div class="container">
+        <!---
+  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.
+-->
+
+<h1 id="precommit-api-docs">Precommit API Docs</h1>
+
+<p>Following gives the downstream consumable API for precommit components.</p>
+
+<ul>
+<li><a href="core">Core Functions</a>, common to both smart-apply-patch and test-patch.</li>
+<li><a href="smart-apply-patch">Smart Apply Patch</a></li>
+<li><a href="test-patch">Test Patch</a>, available to all plugins.</li>
+<li><a href="plugins">Precommit Plugins</a></li>
+</ul>
+
+	  </div>
+      <div class="container">
+    <hr>
+    <footer class="footer">
+        <div class="row-fluid">
+            <div class="span12 text-left">
+                            <div class="span12">
+                Copyright 2008-2015 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Yetus and the Apache feather logo are trademarks of The Apache Software Foundation.
+                            </div>
+            </div>
+
+        </div>
+
+    </footer>
+</div>
+
+	</body>
+</html>


Mime
View raw message