Repository: maven-indexer Updated Branches: refs/heads/master 61a91b069 -> 7e7202d77
[MINDEXER-90] created CLI options reference Project: http://git-wip-us.apache.org/repos/asf/maven-indexer/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-indexer/commit/7e7202d7 Tree: http://git-wip-us.apache.org/repos/asf/maven-indexer/tree/7e7202d7 Diff: http://git-wip-us.apache.org/repos/asf/maven-indexer/diff/7e7202d7 Branch: refs/heads/master Commit: 7e7202d774596eea07a5c905e92b2e9b80a17543 Parents: 61a91b0 Author: Hervé Boutemy <[email protected]> Authored: Tue Aug 19 21:40:20 2014 +0200 Committer: Hervé Boutemy <[email protected]> Committed: Tue Aug 19 21:40:20 2014 +0200 ---------------------------------------------------------------------- indexer-cli/src/site/apt/index.apt.vm | 34 ++++++++++ .../maven/index/cli/NexusIndexerCliTest.java | 66 ++++++++++++++++++++ 2 files changed, 100 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/7e7202d7/indexer-cli/src/site/apt/index.apt.vm ---------------------------------------------------------------------- diff --git a/indexer-cli/src/site/apt/index.apt.vm b/indexer-cli/src/site/apt/index.apt.vm new file mode 100644 index 0000000..6e4bd69 --- /dev/null +++ b/indexer-cli/src/site/apt/index.apt.vm @@ -0,0 +1,34 @@ +~~ 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. + + ----- + ${project.name} + ----- + Hervé Boutemy + ----- + 2014-08-19 + ----- + +${project.name} + + ${project.description} + +* CLI Options Reference + +%{snippet|file=${project.basedir}/target/test-classes/options.html|verbatim=false} + + Either unpack or index with <<<--repository>>> must be used. http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/7e7202d7/indexer-cli/src/test/java/org/apache/maven/index/cli/NexusIndexerCliTest.java ---------------------------------------------------------------------- diff --git a/indexer-cli/src/test/java/org/apache/maven/index/cli/NexusIndexerCliTest.java b/indexer-cli/src/test/java/org/apache/maven/index/cli/NexusIndexerCliTest.java index 2d5255f..a04d0d8 100644 --- a/indexer-cli/src/test/java/org/apache/maven/index/cli/NexusIndexerCliTest.java +++ b/indexer-cli/src/test/java/org/apache/maven/index/cli/NexusIndexerCliTest.java @@ -19,9 +19,17 @@ package org.apache.maven.index.cli; * under the License. */ +import java.io.File; +import java.io.IOException; import java.io.PrintStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import org.apache.commons.cli.Option; import org.apache.maven.index.cli.NexusIndexerCli; +import org.codehaus.plexus.util.FileUtils; public class NexusIndexerCliTest extends AbstractNexusIndexerCliTest @@ -47,4 +55,62 @@ public class NexusIndexerCliTest return cli.execute( args ); } + private final static String LS = System.getProperty( "line.separator" ); + + private static class OptionComparator + implements Comparator<Option> + { + public int compare( Option opt1, Option opt2 ) + { + return opt1.getOpt().compareToIgnoreCase( opt2.getOpt() ); + } + } + + public String getOptionsAsHtml() + { + @SuppressWarnings( "unchecked" ) + List<Option> optList = new ArrayList<Option>( new NexusIndexerCli().buildDefaultCliOptions().getOptions() ); + Collections.sort( optList, new OptionComparator() ); + + StringBuilder sb = new StringBuilder(); + boolean a = true; + sb.append( "<table border='1' class='zebra-striped'><tr class='a'><th><b>Options</b></th><th><b>Description</b></th></tr>" ); + for ( Option option : optList ) + { + a = !a; + sb.append( "<tr class='" ).append( a ? 'a' : 'b' ).append( "'><td><code>-<a name='" ); + sb.append( option.getOpt() ); + sb.append( "'>" ); + sb.append( option.getOpt() ); + sb.append( "</a>,--<a name='" ); + sb.append( option.getLongOpt() ); + sb.append( "'>" ); + sb.append( option.getLongOpt() ); + sb.append( "</a>" ); + if ( option.hasArg() ) + { + if ( option.hasArgName() ) + { + sb.append( " <" ).append( option.getArgName() ).append( ">" ); + } + else + { + sb.append( ' ' ); + } + } + sb.append( "</code></td><td>" ); + sb.append( option.getDescription() ); + sb.append( "</td></tr>" ); + sb.append( LS ); + } + sb.append( "</table>" ); + return sb.toString(); + } + + public void testOptionsAsHtml() + throws IOException + { + File options = getTestFile( "target/test-classes/options.html" ); + FileUtils.fileWrite( options, "UTF-8", getOptionsAsHtml() ); + } }
