Author: skygo Date: Tue Jun 4 01:14:18 2013 New Revision: 1489267 URL: http://svn.apache.org/r1489267 Log: show some commands but layout not nice. older check is wrong and need a better regex
Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/todo.md Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml?rev=1489267&r1=1489266&r2=1489267&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/pom.xml Tue Jun 4 01:14:18 2013 @@ -232,8 +232,8 @@ <id>html</id> <reports> <!--<report>check-screen-site</report>--> - <report>check-site</report> - <!-- <report>check-source-release</report>--> + <report>check-site</report> + <report>check-source-release</report> </reports> </reportSet> </reportSets> Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java?rev=1489267&r1=1489266&r2=1489267&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java Tue Jun 4 01:14:18 2013 @@ -19,6 +19,10 @@ package org.apache.maven.dist.tools; * under the License. */ +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + /** * * @author skygo @@ -30,6 +34,7 @@ class ConfigurationLineInfo private final String artifactId; private final String dist; private static final String URLSEP = "/"; + private MavenMetadata metadata; public ConfigurationLineInfo( String groupId, String artifactId, String dist ) { @@ -81,4 +86,26 @@ class ConfigurationLineInfo { return getBaseURL( repoBaseUrl, version + URLSEP + artifactId + "-" + version + ".pom" ); } + + void addMetadata( MavenMetadata metadata ) + { + this.metadata = metadata; + } + + String getReleaseFromMetadata() + { + + try + { + SimpleDateFormat dateFormatter = new SimpleDateFormat( "yyyyMMddkkmmss" ); + Date f = dateFormatter.parse( metadata.versioning.lastUpdated ); + SimpleDateFormat dateFormattertarget = new SimpleDateFormat( "MMM dd, yyyy" ); + return dateFormattertarget.format( f ); + } + catch ( ParseException ex ) + { + return "Cannot parse"; + } + + } } Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java?rev=1489267&r1=1489266&r2=1489267&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteMojo.java Tue Jun 4 01:14:18 2013 @@ -34,20 +34,12 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.factory.ArtifactFactory; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; -import org.apache.maven.artifact.repository.MavenArtifactRepository; -import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.apache.maven.dist.tools.checkers.HTMLChecker; import org.apache.maven.dist.tools.checkers.HTMLCheckerFactory; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectBuilder; import org.apache.maven.reporting.MavenReportException; import org.jsoup.HttpStatusException; import org.jsoup.Jsoup; @@ -65,6 +57,7 @@ import org.jsoup.select.Elements; public class DistCheckSiteMojo extends AbstractDistCheckMojo { private static final String MAVEN_SITE = "http://maven.apache.org"; + private static final int HTTP_OK = 200; @Override public String getOutputName() @@ -89,7 +82,7 @@ public class DistCheckSiteMojo extends A private String url; private Map<HTMLChecker, Boolean> checkMap = new HashMap<>(); - private int statusCode = 200; + private int statusCode = HTTP_OK; private Document document; public DistCheckSiteResult( ConfigurationLineInfo r, String version ) @@ -118,9 +111,9 @@ public class DistCheckSiteMojo extends A return checkMap; } - private void setHTTPErrorUrl( int statusCode ) + private void setHTTPErrorUrl( int status ) { - this.statusCode = statusCode; + this.statusCode = status; } /** @@ -133,7 +126,7 @@ public class DistCheckSiteMojo extends A private void getSkins( Sink sink ) { - if ( statusCode != 200 ) + if ( statusCode != HTTP_OK ) { sink.text( "None" ); } @@ -146,10 +139,11 @@ public class DistCheckSiteMojo extends A Node n = htmlTa.previousSibling(); if ( n instanceof Comment ) { - text += (( Comment ) n).getData(); + text += ( ( Comment ) n ).getData(); } else - { text += "Nothing"; + { + text += "Nothing"; } } @@ -173,7 +167,7 @@ public class DistCheckSiteMojo extends A private void getOverall( Sink sink ) { - if ( statusCode != 200 ) + if ( statusCode != HTTP_OK ) { iconError( sink ); } @@ -263,7 +257,7 @@ public class DistCheckSiteMojo extends A sink.rawText( "URL" ); sink.tableHeaderCell_(); sink.tableHeaderCell(); - sink.rawText( "Skins and comments on top of html (helping for date but not allways)" ); + sink.rawText( "Skins and comments on top of html (helping for date but not always)" ); sink.tableHeaderCell_(); sink.tableHeaderCell(); sink.rawText( "Precise and overkill contents check summary details on your left ==>" ); @@ -290,9 +284,12 @@ public class DistCheckSiteMojo extends A sink.tableCell(); sink.rawText( csr.getVersion() ); sink.tableCell_(); - + sink.tableCell(); - if ( csr.getStatusCode() != 200 ) + sink.rawText( csr.getConfigurationLine().getReleaseFromMetadata() ); + sink.tableCell_(); + sink.tableCell(); + if ( csr.getStatusCode() != HTTP_OK ) { iconError( sink ); sink.rawText( "[" + csr.getStatusCode() + "] " ); @@ -393,7 +390,7 @@ public class DistCheckSiteMojo extends A JAXBContext context = JAXBContext.newInstance( MavenMetadata.class ); Unmarshaller unmarshaller = context.createUnmarshaller(); MavenMetadata metadata = ( MavenMetadata ) unmarshaller.unmarshal( input ); - + configLine.addMetadata( metadata ); getLog().info( "Checking for site for artifact : " + configLine.getGroupId() + ":" + configLine.getArtifactId() + ":" + metadata.versioning.latest ); // revert sort versions (not handling alpha and complex vesion scheme but more usefull version are displayed left side Collections.sort( metadata.versioning.versions, Collections.reverseOrder() ); Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java?rev=1489267&r1=1489266&r2=1489267&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSiteTakeScreenMojo.java Tue Jun 4 01:14:18 2013 @@ -36,20 +36,12 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import org.apache.commons.io.FileUtils; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.factory.ArtifactFactory; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; -import org.apache.maven.artifact.repository.MavenArtifactRepository; -import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.apache.maven.dist.tools.checkers.HTMLChecker; import org.apache.maven.dist.tools.checkers.HTMLCheckerFactory; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectBuilder; import org.apache.maven.reporting.MavenReportException; import org.jsoup.HttpStatusException; import org.jsoup.Jsoup; @@ -343,7 +335,7 @@ public class DistCheckSiteTakeScreenMojo // revert sort versions (not handling alpha and complex vesion scheme but more usefull version are displayed left side Collections.sort( metadata.versioning.versions, Collections.reverseOrder() ); getLog().warn( metadata.versioning.versions + " version(s) detected " + repoBaseUrl ); - + configLine.addMetadata( metadata ); // central checkSite( configLine.getVersionnedPomFileURL( repoBaseUrl, metadata.versioning.latest ), configLine, metadata.versioning.latest ); Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java?rev=1489267&r1=1489266&r2=1489267&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java Tue Jun 4 01:14:18 2013 @@ -31,7 +31,10 @@ import java.util.Locale; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; +import org.apache.maven.doxia.markup.HtmlMarkup; import org.apache.maven.doxia.sink.Sink; +import org.apache.maven.doxia.sink.SinkEventAttributeSet; +import org.apache.maven.doxia.sink.SinkEventAttributes; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.reporting.MavenReportException; @@ -71,11 +74,14 @@ public class DistCheckSourceReleaseMojo return "Verification of source release"; } + + class DistCheckSourceRelease extends AbstractCheckResult { private List<String> central; private List<String> dist; + private List<String> older; public DistCheckSourceRelease( ConfigurationLineInfo r, String version ) { @@ -91,6 +97,11 @@ public class DistCheckSourceReleaseMojo { central = checkRepos; } + + private void setOlderSourceRelease( List<String> checkRepos ) + { + older = checkRepos; + } } private List<DistCheckSourceRelease> results = new LinkedList<>(); @@ -121,6 +132,9 @@ public class DistCheckSourceReleaseMojo sink.paragraph(); sink.text( "Check Source Release (= artifactId + version + '-source-release.zip[.asc|.md5]') availability in:" ); sink.paragraph_(); + sink.paragraph(); + sink.text( "cli command and olders artifact exploration is Work In Progress" ); + sink.paragraph_(); sink.list(); sink.listItem(); sink.link( repoBaseUrl ); @@ -146,11 +160,17 @@ public class DistCheckSourceReleaseMojo sink.rawText( "LATEST" ); sink.tableHeaderCell_(); sink.tableHeaderCell(); + sink.rawText( "DATE" ); + sink.tableHeaderCell_(); + sink.tableHeaderCell(); sink.rawText( "central" ); sink.tableHeaderCell_(); sink.tableHeaderCell(); sink.rawText( "dist" ); sink.tableHeaderCell_(); + sink.tableHeaderCell(); + sink.rawText( "Older in dist REGEX ISSUE NO TRUST (mainly for doxia) " ); + sink.tableHeaderCell_(); sink.tableRow_(); for ( DistCheckSourceRelease csr : results ) @@ -159,7 +179,8 @@ public class DistCheckSourceReleaseMojo sink.tableRow(); sink.tableCell(); - sink.rawText( csr.getConfigurationLine().getGroupId() ); + // shorten groupid + sink.rawText( csr.getConfigurationLine().getGroupId().replaceAll( "org.apache.maven", "o.a.m" ) ); sink.tableCell_(); sink.tableCell(); sink.rawText( csr.getConfigurationLine().getArtifactId() ); @@ -169,7 +190,11 @@ public class DistCheckSourceReleaseMojo sink.rawText( csr.getVersion() ); sink.link_(); sink.tableCell_(); - + + sink.tableCell(); + sink.rawText( csr.getConfigurationLine().getReleaseFromMetadata() ); + sink.tableCell_(); + sink.tableCell(); sink.link( cli.getBaseURL( repoBaseUrl, "" ) ); sink.text( "artifact" ); @@ -194,7 +219,7 @@ public class DistCheckSourceReleaseMojo sink.rawText( missing ); } sink.tableCell_(); - + // dist sink.tableCell(); sink.link( cli.getDist() ); sink.text( cli.getDist().substring( DIST_AREA.length() ) ); @@ -208,14 +233,64 @@ public class DistCheckSourceReleaseMojo { iconWarning( sink ); } + StringBuilder cliMissing = new StringBuilder(); for ( String missing : csr.dist ) { sink.lineBreak(); iconError( sink ); sink.rawText( missing ); + cliMissing.append( "\nwget -O " ).append( cli.getVersionnedFolderURL( repoBaseUrl, csr.getVersion() ) ). + append( "/" ).append( missing ); + cliMissing.append( "\nsvn co " ).append( missing ); + } + if ( !cliMissing.toString().isEmpty() ) + { + sink.lineBreak(); + SinkEventAttributeSet atts = new SinkEventAttributeSet(); + sink.unknown( "pre", new Object[] + { + new Integer( HtmlMarkup.TAG_TYPE_START ) + }, atts ); + sink.text( cliMissing.toString() ); + sink.unknown( "pre", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); } sink.tableCell_(); - + //older + sink.tableCell(); + sink.link( cli.getDist() ); + sink.text( cli.getDist().substring( DIST_AREA.length() ) ); + sink.link_(); + sink.text( "source-release" ); + if ( csr.dist.isEmpty() ) + { + iconSuccess( sink ); + } + else + { + iconWarning( sink ); + } + + StringBuilder cliOlder = new StringBuilder(); + for ( String missing : csr.older ) + { + sink.lineBreak(); + iconError( sink ); + sink.rawText( missing ); + cliOlder.append( "\nsvn rm " ).append( missing ); + } + if ( !cliOlder.toString().isEmpty() ) + { + sink.lineBreak(); + SinkEventAttributeSet atts = new SinkEventAttributeSet(); + sink.unknown( "pre", new Object[] + { + new Integer( HtmlMarkup.TAG_TYPE_START ) + }, atts ); + sink.text( cliOlder.toString() ); + sink.unknown( "pre", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, null ); + } + + sink.tableCell_(); sink.tableRow_(); } sink.table_(); @@ -223,7 +298,44 @@ public class DistCheckSourceReleaseMojo sink.flush(); sink.close(); } + + private List<String> checkOldinRepos( String repourl, ConfigurationLineInfo r, String version ) throws IOException + { + Document doc = Jsoup.connect( repourl ).get(); + Elements links = doc.select( "a[href]" ); + List<String> expectedFile = new LinkedList<>(); + List<String> retrievedFile = new LinkedList<>(); + // http://maven.apache.org/developers/release/maven-project-release-procedure.html#Copy_the_source_release_to_the_Apache_Distribution_Area + // build source artifact name + expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip" ); + expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip.asc" ); + expectedFile.add( r.getArtifactId() + "-" + version + "-source-release.zip.md5" ); + + + + for ( Element e : links ) + { + String art = e.attr( "href" ); + // need a regex no strong enough + if ( art.startsWith( r.getArtifactId() + "-" ) && (art.endsWith( "-source-release.zip" ) + || art.endsWith( "-source-release.zip.asc" ) + || art.endsWith( "-source-release.zip.md5" )) ) + //if (art.matches( "^"+r.getArtifactId()+"-\d.-source-release.zip[]")) + { + retrievedFile.add( e.attr( "href" ) ); + } + } + retrievedFile.removeAll( expectedFile ); + if ( !expectedFile.isEmpty() ) + { + for ( String sourceItem : expectedFile ) + { + getLog().error( "Older:" + sourceItem + " in " + repourl ); + } + } + return retrievedFile; + } private List<String> checkRepos( String repourl, ConfigurationLineInfo r, String version ) throws IOException { Document doc = Jsoup.connect( repourl ).get(); @@ -254,24 +366,26 @@ public class DistCheckSourceReleaseMojo } @Override - void checkArtifact( ConfigurationLineInfo r, String repoBaseUrl ) throws MojoExecutionException + void checkArtifact( ConfigurationLineInfo configLine, String repoBaseUrl ) throws MojoExecutionException { - try ( BufferedReader input = new BufferedReader( new InputStreamReader( new URL( r.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) + try ( BufferedReader input = new BufferedReader( new InputStreamReader( new URL( configLine.getMetadataFileURL( repoBaseUrl ) ).openStream() ) ) ) { JAXBContext context = JAXBContext.newInstance( MavenMetadata.class ); Unmarshaller unmarshaller = context.createUnmarshaller(); MavenMetadata metadata = ( MavenMetadata ) unmarshaller.unmarshal( input ); - getLog().info( "Checking for artifact : " + r.getGroupId() + ":" + r.getArtifactId() + ":" + metadata.versioning.latest ); + getLog().info( "Checking for artifact : " + configLine.getGroupId() + ":" + configLine.getArtifactId() + ":" + metadata.versioning.latest ); // revert sort versions (not handling alpha and complex vesion scheme but more usefull version are displayed left side Collections.sort( metadata.versioning.versions, Collections.reverseOrder() ); getLog().warn( metadata.versioning.versions + " version(s) detected " + repoBaseUrl ); - DistCheckSourceRelease result = new DistCheckSourceRelease( r, metadata.versioning.latest ); + configLine.addMetadata( metadata ); + DistCheckSourceRelease result = new DistCheckSourceRelease( configLine, metadata.versioning.latest ); results.add( result ); // central - result.setMisingCentralSourceRelease( checkRepos( r.getVersionnedFolderURL( repoBaseUrl, metadata.versioning.latest ), r, metadata.versioning.latest ) ); + result.setMisingCentralSourceRelease( checkRepos( configLine.getVersionnedFolderURL( repoBaseUrl, metadata.versioning.latest ), configLine, metadata.versioning.latest ) ); //dist - result.setMissingDistSourceRelease( checkRepos( r.getDist(), r, metadata.versioning.latest ) ); + result.setMissingDistSourceRelease( checkRepos( configLine.getDist(), configLine, metadata.versioning.latest ) ); + result.setOlderSourceRelease( checkOldinRepos( configLine.getDist(), configLine, metadata.versioning.latest ) ); } catch ( MalformedURLException ex ) { Modified: maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/todo.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/todo.md?rev=1489267&r1=1489266&r2=1489267&view=diff ============================================================================== --- maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/todo.md (original) +++ maven/sandbox/trunk/dist-tools/dist-tool-plugin/src/site/markdown/todo.md Tue Jun 4 01:14:18 2013 @@ -6,17 +6,22 @@ Todo # Source Release * add date of release (from artifact) + -- date from metadata is ok ? * Check older artifact in dist (only latest should be present, previous version removed) * Shell command for cleaning older artifacts # Sites * Check if artifact versions are up to date in /plugins/, /shared/, /pom/ and so on + -- [sky] not sure to get your point :) * remove "check if version present", since our inheritance ensures we don't have problems + -- [sky] kept only for precise layout check * replace Skins columns with one unique column "Skin used", showing which skin is used (with version) - -- [RE] no garantee some site like http://maven.apache.org/plugins/maven-one-plugin/ have no style header + -- [sky] no garantee some site like http://maven.apache.org/plugins/maven-one-plugin/ have no style header * add date of release (from artifact) + -- [sky] date from metadata is ok ? * add date of site + -- [sky] date from comment part in skin (no always ok :( ) # (for-fun) * take screenshot of site. ( os specific )