| ## Produce a report in text format that shows all versions for all Maven 2 |
| ## plugins. It tries to show if plugins are in need of a release, based purely |
| ## on when the last release was made. |
| ## |
| ## It also checks if data is missing from the versions in JIRA. |
| ## |
| ## |
| ## Return the number of months that has passed since the given date |
| ## |
| #macro( monthsAgo $d ) |
| #set( $nowYear = $strings.asInt( $date.format("yyyy") ) ) |
| #set( $nowMonth = $strings.asInt( $date.format("MM") ) ) |
| #set( $thenYear = $strings.asInt( $date.format( $d, "yyyy" ) ) ) |
| #set( $thenMonth = $strings.asInt( $date.format( $d, "MM" ) ) ) |
| #set( $years = $nowYear - $thenYear ) |
| #set( $months = ( $years * 12 ) + ( $nowMonth - $thenMonth ) ) |
| $months#end |
| |
| ## If the given date is older than the limit (12 months) issue a warning |
| ## |
| #macro( oldWarning $d ) |
| #set( $limit = 12 ) |
| #set( $nowYear = $strings.asInt( $date.format("yyyy") ) ) |
| #set( $nowMonth = $strings.asInt( $date.format("MM") ) ) |
| #set( $thenYear = $strings.asInt( $date.format( $d, "yyyy" ) ) ) |
| #set( $thenMonth = $strings.asInt( $date.format( $d, "MM" ) ) ) |
| #set( $years = $nowYear - $thenYear ) |
| #set( $months = ( $years * 12 ) + ( $nowMonth - $thenMonth ) ) |
| #if( $months > $limit )OLD #end |
| #end |
| |
| #set( $jira = $xmlrpc.connect("swizzletester:swizzle","http://jira.codehaus.org/rpc/xmlrpc") ) |
| #set( $projects = $jira.getProjects().matches("name", "Maven 2.*Plugin") ) |
| #foreach( $project in $projects ) |
| #set( $allVersions = $jira.getVersions($project.key) ) |
| #set( $project.attributes.allVersionsSize = $allVersions.size() ) |
| #set( $project.attributes.unreleasedVersions = $allVersions.matches("released", "false").descending("name") ) |
| #set( $project.attributes.releasedVersions = $allVersions.matches("released", "true").descending("name") ) |
| #end |
| |
| #foreach( $project in $projects.ascending("name") ) |
| $project.name ($project.attributes.allVersionsSize version#if( $project.attributes.allVersionsSize != 1 )s#end) |
| Last released |
| #if( $project.attributes.releasedVersions.size() == 0) |
| NEVER |
| #else |
| #set( $lastReleasedVersion = $collections.first( $project.attributes.releasedVersions ) ) |
| #set( $lastReleasedDate = $date.format( $lastReleasedVersion.releaseDate, "yyyy-MM-dd" ) ) |
| #if( $lastReleasedDate == $date.format("yyyy-MM-dd") ) |
| UNKNOWN |
| #else |
| #oldWarning( $lastReleasedVersion.releaseDate )#monthsAgo( $lastReleasedVersion.releaseDate ) months ago |
| #end |
| #end |
| Unreleased versions ($project.attributes.unreleasedVersions.size()) |
| #foreach( $version in $project.attributes.unreleasedVersions ) |
| #set( $scheduledReleaseDate = $date.format( $version.releaseDate, "yyyy-MM-dd" ) ) |
| $version#if( $scheduledReleaseDate != $date.format("yyyy-MM-dd") ) (scheduled for release $scheduledReleaseDate)#end |
| |
| #end |
| Released versions ($project.attributes.releasedVersions.size()) |
| #foreach( $version in $project.attributes.releasedVersions ) |
| #set( $releaseDate = $date.format( $version.releaseDate, "yyyy-MM-dd" ) ) |
| #set( $releaseMonth = $date.format( $version.releaseDate, "MM" ) ) |
| #set( $releaseYear = $date.format( $version.releaseDate, "yyyy" ) ) |
| $version (#if( $releaseDate == $date.format("yyyy-MM-dd") )MISSING RELEASE DATE#else$releaseDate#end) |
| #end |
| |
| #end |