Coverage Report - org.apache.maven.plugins.repository.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0%
0/114
0%
0/62
4,667
 
 1  
 package org.apache.maven.plugins.repository;
 2  
 
 3  
 import java.util.ArrayList;
 4  
 import java.util.Iterator;
 5  
 import java.util.List;
 6  
 
 7  
 import org.apache.maven.plugin.AbstractMojo;
 8  
 import org.apache.maven.plugin.MojoExecutionException;
 9  
 
 10  
 /**
 11  
  * Display help information on maven-repository-plugin.<br/> Call <pre>  mvn repository:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Sat Jul 17 16:23:26 CEST 2010
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.6)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  */
 18  0
 public class HelpMojo
 19  
     extends AbstractMojo
 20  
 {
 21  
     /**
 22  
      * If <code>true</code>, display all settable properties for each goal.
 23  
      * 
 24  
      * @parameter expression="${detail}" default-value="false"
 25  
      */
 26  
     private boolean detail;
 27  
 
 28  
     /**
 29  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 30  
      * 
 31  
      * @parameter expression="${goal}"
 32  
      */
 33  
     private java.lang.String goal;
 34  
 
 35  
     /**
 36  
      * The maximum length of a display line, should be positive.
 37  
      * 
 38  
      * @parameter expression="${lineLength}" default-value="80"
 39  
      */
 40  
     private int lineLength;
 41  
 
 42  
     /**
 43  
      * The number of spaces per indentation level, should be positive.
 44  
      * 
 45  
      * @parameter expression="${indentSize}" default-value="2"
 46  
      */
 47  
     private int indentSize;
 48  
 
 49  
 
 50  
     /** {@inheritDoc} */
 51  
     public void execute()
 52  
         throws MojoExecutionException
 53  
     {
 54  0
         if ( lineLength <= 0 )
 55  
         {
 56  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 57  0
             lineLength = 80;
 58  
         }
 59  0
         if ( indentSize <= 0 )
 60  
         {
 61  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 62  0
             indentSize = 2;
 63  
         }
 64  
 
 65  0
         StringBuffer sb = new StringBuffer();
 66  
 
 67  0
         append( sb, "org.apache.maven.plugins:maven-repository-plugin:2.3.1", 0 );
 68  0
         append( sb, "", 0 );
 69  
 
 70  0
         append( sb, "Maven Repository Plugin", 0 );
 71  0
         append( sb, "Creates bundles of artifacts that should be manually uploaded to the central Maven repository.", 1 );
 72  0
         append( sb, "", 0 );
 73  
 
 74  0
         if ( goal == null || goal.length() <= 0 )
 75  
         {
 76  0
             append( sb, "This plugin has 3 goals:", 0 );
 77  0
             append( sb, "", 0 );
 78  
         }
 79  
 
 80  0
         if ( goal == null || goal.length() <= 0 || "bundle-create".equals( goal ) )
 81  
         {
 82  0
             append( sb, "repository:bundle-create", 0 );
 83  0
             append( sb, "Goal which creates an upload bundle for a project built with Maven.", 1 );
 84  0
             append( sb, "", 0 );
 85  0
             if ( detail )
 86  
             {
 87  0
                 append( sb, "Available parameters:", 1 );
 88  0
                 append( sb, "", 0 );
 89  
 
 90  0
                 append( sb, "disableMaterialization (Default: false)", 2 );
 91  0
                 append( sb, "Disable validations to make sure bundle supports project materialization.\nWARNING: This means your project will be MUCH harder to use.", 3 );
 92  0
                 append( sb, "", 0 );
 93  
             }
 94  
         }
 95  
 
 96  0
         if ( goal == null || goal.length() <= 0 || "bundle-pack".equals( goal ) )
 97  
         {
 98  0
             append( sb, "repository:bundle-pack", 0 );
 99  0
             append( sb, "Packs artifacts already available in a local repository in a bundle for an upload requests. It requires that the artifact has a POM in the local repository. It will check for mandatory elements, asking interactively for missing values. Can be used to generate bundles for third parties artifacts that have been manually added to the local repository.", 1 );
 100  0
             append( sb, "", 0 );
 101  0
             if ( detail )
 102  
             {
 103  0
                 append( sb, "Available parameters:", 1 );
 104  0
                 append( sb, "", 0 );
 105  
 
 106  0
                 append( sb, "artifactId", 2 );
 107  0
                 append( sb, "ArtifactId for the artifact to create an upload bundle for.", 3 );
 108  0
                 append( sb, "", 0 );
 109  
 
 110  0
                 append( sb, "disableMaterialization (Default: false)", 2 );
 111  0
                 append( sb, "Disable validations to make sure bundle supports project materialization.\nWARNING: This means your project will be MUCH harder to use.", 3 );
 112  0
                 append( sb, "", 0 );
 113  
 
 114  0
                 append( sb, "groupId", 2 );
 115  0
                 append( sb, "GroupId for the artifact to create an upload bundle for.", 3 );
 116  0
                 append( sb, "", 0 );
 117  
 
 118  0
                 append( sb, "scmConnection", 2 );
 119  0
                 append( sb, "Read-only URL for SCM tool connections, in cases where this isn\'t provided by the POM.\nNOTE: This should be a standard maven-scm URL. See the format guidelines for more information.", 3 );
 120  0
                 append( sb, "", 0 );
 121  
 
 122  0
                 append( sb, "scmUrl", 2 );
 123  0
                 append( sb, "Viewable URL for SCM connections, in cases where this isn\'t provided by the POM.", 3 );
 124  0
                 append( sb, "", 0 );
 125  
 
 126  0
                 append( sb, "version", 2 );
 127  0
                 append( sb, "Version for the artifact to create an upload bundle for.", 3 );
 128  0
                 append( sb, "", 0 );
 129  
             }
 130  
         }
 131  
 
 132  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 133  
         {
 134  0
             append( sb, "repository:help", 0 );
 135  0
             append( sb, "Display help information on maven-repository-plugin.\nCall\n\u00a0\u00a0mvn\u00a0repository:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 136  0
             append( sb, "", 0 );
 137  0
             if ( detail )
 138  
             {
 139  0
                 append( sb, "Available parameters:", 1 );
 140  0
                 append( sb, "", 0 );
 141  
 
 142  0
                 append( sb, "detail (Default: false)", 2 );
 143  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 144  0
                 append( sb, "", 0 );
 145  
 
 146  0
                 append( sb, "goal", 2 );
 147  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 148  0
                 append( sb, "", 0 );
 149  
 
 150  0
                 append( sb, "indentSize (Default: 2)", 2 );
 151  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 152  0
                 append( sb, "", 0 );
 153  
 
 154  0
                 append( sb, "lineLength (Default: 80)", 2 );
 155  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 156  0
                 append( sb, "", 0 );
 157  
             }
 158  
         }
 159  
 
 160  0
         if ( getLog().isInfoEnabled() )
 161  
         {
 162  0
             getLog().info( sb.toString() );
 163  
         }
 164  0
     }
 165  
 
 166  
     /**
 167  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 168  
      *
 169  
      * @param str String to repeat
 170  
      * @param repeat number of times to repeat str
 171  
      * @return String with repeated String
 172  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 173  
      * @throws NullPointerException if str is <code>null</code>
 174  
      */
 175  
     private static String repeat( String str, int repeat )
 176  
     {
 177  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 178  
 
 179  0
         for ( int i = 0; i < repeat; i++ )
 180  
         {
 181  0
             buffer.append( str );
 182  
         }
 183  
 
 184  0
         return buffer.toString();
 185  
     }
 186  
 
 187  
     /** 
 188  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 189  
      * <b>Note</b>: The last character is always a new line.
 190  
      * 
 191  
      * @param sb The buffer to append the description, not <code>null</code>.
 192  
      * @param description The description, not <code>null</code>.
 193  
      * @param indent The base indentation level of each line, must not be negative.
 194  
      */
 195  
     private void append( StringBuffer sb, String description, int indent )
 196  
     {
 197  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 198  
         {
 199  0
             sb.append( it.next().toString() ).append( '\n' );
 200  
         }
 201  0
     }
 202  
 
 203  
     /** 
 204  
      * Splits the specified text into lines of convenient display length.
 205  
      * 
 206  
      * @param text The text to split into lines, must not be <code>null</code>.
 207  
      * @param indent The base indentation level of each line, must not be negative.
 208  
      * @param indentSize The size of each indentation, must not be negative.
 209  
      * @param lineLength The length of the line, must not be negative.
 210  
      * @return The sequence of display lines, never <code>null</code>.
 211  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 212  
      */
 213  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 214  
     {
 215  0
         List lines = new ArrayList();
 216  
 
 217  0
         String ind = repeat( "\t", indent );
 218  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 219  0
         for ( int i = 0; i < plainLines.length; i++ )
 220  
         {
 221  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 222  
         }
 223  
 
 224  0
         return lines;
 225  
     }
 226  
 
 227  
     /** 
 228  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 229  
      * 
 230  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 231  
      * @param line The line to add, must not be <code>null</code>.
 232  
      * @param indentSize The size of each indentation, must not be negative.
 233  
      * @param lineLength The length of the line, must not be negative.
 234  
      */
 235  
     private static void toLines( List lines, String line, int indentSize, int lineLength )
 236  
     {
 237  0
         int lineIndent = getIndentLevel( line );
 238  0
         StringBuffer buf = new StringBuffer( 256 );
 239  0
         String[] tokens = line.split( " +" );
 240  0
         for ( int i = 0; i < tokens.length; i++ )
 241  
         {
 242  0
             String token = tokens[i];
 243  0
             if ( i > 0 )
 244  
             {
 245  0
                 if ( buf.length() + token.length() >= lineLength )
 246  
                 {
 247  0
                     lines.add( buf.toString() );
 248  0
                     buf.setLength( 0 );
 249  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 250  
                 }
 251  
                 else
 252  
                 {
 253  0
                     buf.append( ' ' );
 254  
                 }
 255  
             }
 256  0
             for ( int j = 0; j < token.length(); j++ )
 257  
             {
 258  0
                 char c = token.charAt( j );
 259  0
                 if ( c == '\t' )
 260  
                 {
 261  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 262  
                 }
 263  0
                 else if ( c == '\u00A0' )
 264  
                 {
 265  0
                     buf.append( ' ' );
 266  
                 }
 267  
                 else
 268  
                 {
 269  0
                     buf.append( c );
 270  
                 }
 271  
             }
 272  
         }
 273  0
         lines.add( buf.toString() );
 274  0
     }
 275  
 
 276  
     /** 
 277  
      * Gets the indentation level of the specified line.
 278  
      * 
 279  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 280  
      * @return The indentation level of the line.
 281  
      */
 282  
     private static int getIndentLevel( String line )
 283  
     {
 284  0
         int level = 0;
 285  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 286  
         {
 287  0
             level++;
 288  
         }
 289  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 290  
         {
 291  0
             if ( line.charAt( i ) == '\t' )
 292  
             {
 293  0
                 level++;
 294  0
                 break;
 295  
             }
 296  
         }
 297  0
         return level;
 298  
     }
 299  
 }