001 /**
002 * Copyright 2010-2012 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.codehaus.mojo.license;
017
018 import org.apache.maven.plugin.MojoExecutionException;
019 import org.apache.maven.plugin.MojoFailureException;
020 import org.codehaus.mojo.license.model.License;
021 import org.codehaus.mojo.license.model.LicenseStore;
022
023 import java.io.IOException;
024 import java.util.Arrays;
025 import java.util.Collections;
026 import java.util.List;
027
028 /**
029 * Display all available licenses.
030 *
031 * @author tchemit <chemit@codelutin.com>
032 * @goal license-list
033 * @requiresProject false
034 * @requiresDirectInvocation
035 * @since 1.0
036 */
037 public class LicenseListMojo
038 extends AbstractLicenseMojo
039 {
040
041 /**
042 * the url of an extra license repository.
043 *
044 * @parameter expression="${extraResolver}"
045 * @since 1.0
046 */
047 private String extraResolver;
048
049 /**
050 * A flag to display also the content of each license.
051 *
052 * @parameter expression="${detail}"
053 * @since 1.0
054 */
055 private boolean detail;
056
057 /**
058 * store of licenses
059 */
060 protected LicenseStore licenseStore;
061
062 @Override
063 protected void init()
064 throws Exception
065 {
066
067 // obtain licenses store
068 licenseStore = LicenseStore.createLicenseStore( getLog(), getExtraResolver() );
069 }
070
071 @Override
072 public void doAction()
073 throws MojoExecutionException, MojoFailureException
074 {
075 StringBuilder buffer = new StringBuilder();
076
077 if ( isVerbose() )
078 {
079 buffer.append( "\n\n-------------------------------------------------------------------------------\n" );
080 buffer.append( " maven-license-plugin\n" );
081 buffer.append( "-------------------------------------------------------------------------------\n\n" );
082 }
083 buffer.append( "Available licenses :\n\n" );
084
085 List<String> names = Arrays.asList( licenseStore.getLicenseNames() );
086
087 int maxLength = 0;
088 for ( String name : names )
089 {
090 if ( name.length() > maxLength )
091 {
092 maxLength = name.length();
093 }
094 }
095 Collections.sort( names );
096
097 String pattern = " * %1$-" + maxLength + "s : %2$s\n";
098 for ( String licenseName : names )
099 {
100 License license = licenseStore.getLicense( licenseName );
101 buffer.append( String.format( pattern, licenseName, license.getDescription() ) );
102 if ( isDetail() )
103 {
104 try
105 {
106 buffer.append( "\n" );
107 buffer.append( license.getHeaderContent( getEncoding() ) );
108 buffer.append( "\n\n" );
109 }
110 catch ( IOException ex )
111 {
112 throw new MojoExecutionException(
113 "could not instanciate license with name " + licenseName + " for reason " + ex.getMessage(),
114 ex );
115 }
116 }
117 }
118 getLog().info( buffer.toString() );
119 }
120
121 public String getExtraResolver()
122 {
123 return extraResolver;
124 }
125
126 public boolean isDetail()
127 {
128 return detail;
129 }
130
131 public void setExtraResolver( String extraResolver )
132 {
133 this.extraResolver = extraResolver;
134 }
135
136 public void setDetail( boolean detail )
137 {
138 this.detail = detail;
139 }
140 }