<?xml version="1.0"?>

<!-- 
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 * 
 * Licensed 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
  xmlns:j="jelly:core"
  xmlns:x="jelly:xml"
  xmlns:ant="jelly:ant"
  xmlns:define="jelly:define"
  xmlns:util="jelly:util"
  xmlns:doc="doc"
  xmlns:maven="jelly:maven"
  xmlns:jsl="jelly:jsl">

  <goal name="announcement" prereqs="announcement:generate"
    description="Generate release announcement"/>

  <goal name="announcement:generate"
    description="Generate release announcement">

    <j:if test="${context.getVariable('maven.announcement.version') == null}">
      <ant:fail>The 'maven.announcement.version' property needs to be defined.</ant:fail>
    </j:if>
  
    <echo>Generating announcement for release ${maven.announcement.version} ...</echo>

    <util:file var="inputFile" name="${maven.docs.src}/changes.xml"/>
    <x:parse var="doc" xml="${inputFile}"/>
    
    <maven:property var="versionVariable" name="maven.announcement.version" defaultValue="${pom.currentVersion}"/>
  
    <jsl:stylesheet select="$doc">
      <jsl:template match="document/body/release">
        <x:set var="version" select="string(@version)"/>
        <j:if test="${versionVariable.equals(version)}">
            <x:set var="versionFound" select="string(@version)"/>
        </j:if>
      </jsl:template>
    </jsl:stylesheet>
    
    <j:if test="${versionFound == null}">
      <ant:fail>The release '${maven.announcement.version}' could not be found in change log</ant:fail>
    </j:if>
    
    
    <j:set var="stylesheetURI" 
        value="file:${plugin.resources}/announcement.jsl"/>
    <j:file
        name="${maven.build.dir}/announcement.txt"
        outputMode="xml"
        omitXmlDeclaration="true"
        prettyPrint="false">
      <j:include uri="${stylesheetURI.toString()}"/>
    </j:file>

  </goal>

  <goal name="announcement:text" prereqs="announcement:generate"
    description="Generate release announcement">

    <util:file var="inputFile" name="${maven.docs.src}/changes.xml"/>
    <x:parse var="doc" xml="${inputFile}"/>

    <j:set var="stylesheetURI" 
        value="file:${plugin.resources}/announcement.jsl"/>
    <j:file
        name="${maven.build.dir}/announcement.xml"
        outputMode="xml"
        prettyPrint="false">
      <j:include uri="${stylesheetURI.toString()}"/>
    </j:file>

  </goal>

</project>
