<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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 default="local-deploy" basedir="." name="Forrest_Plugins_build_file">
  <property environment="env"/>
<!-- The minimum version of Forrest a plugin is known to work -->
<!-- This should be overridden in the plugin build file when necessary
       i.e. when the plugin is being developed for a different Forrest version -->
  <property name="forrest.version" value="0.9"/>
  <property name="forrest.home"                       location="${env.FORREST_HOME}"/>
  <property name="forrest.core"                       location="${env.FORREST_HOME}/main" />
  <property name="forrest.ant.lib.dir"                location="${forrest.home}/tools/ant/lib"/>
  <property name="forrest.build.dir"                  location="${forrest.home}/build"/>
  <property name="forrest.plugins.dir"                location="${forrest.home}/plugins"/>
  <property name="forrest.plugins.build.dir"          location="${forrest.home}/plugins/build"/>
  <property name="forrest.plugins.dist.dir"           location="${forrest.plugins.build.dir}/dist"/>
  <property name="forrest.plugins.template.dir"       location="${forrest.home}/plugins/pluginTemplate"/>
  <property name="forrest.plugins.localDeploy.dir"    location="${forrest.build.dir}/plugins"/>
  <property name="forrest.plugins.descriptor.file"    location="${forrest.plugins.dir}/plugins.xml"/>
<!-- the plugin config (i.e. applies to current plugin) -->
  <property name="plugin.src.dir"             value="src"/>
  <property name="plugin.java.dir"            value="${plugin.src.dir}/java"/>
  <property name="plugin.lib.dir"             value="lib"/>
  <property name="plugin.resources.dir"       value="resources"/>
  <property name="plugin.stylesheets.dir"     value="${plugin.resources.dir}/stylesheets"/>
  <property name="plugin.docServer"           value="http://forrest.apache.org/"/>
  <property name="plugin.docPath"             value="pluginDocs"/>
  <property name="plugin.downloadServer"      value="http://forrest.apache.org/plugins"/>
  <property name="plugin.downloadPath"        value="plugins"/>
  <property name="deploy.svn.user"            value=""/>
  <property name="deploy.svn.password"        value=""/>
  <property name="deploy.plugins.svn.url"     value="https://svn.apache.org/repos/asf/forrest/site/plugins"/>
  <property name="deploy.plugin.docs.svn.url" value="https://svn.apache.org/repos/asf/forrest/site/pluginDocs"/>
  <property name="deploy.plugins.svn-dir"     location="${forrest.build.dir}/svn-plugins-deploy"/>
  <property name="deploy.docs.svn-dir"        location="${forrest.build.dir}/svn-plugin-docs-deploy"/>
  <property name="deploy.plugins.svn-filestoadd"  location="build/svn-plugin.deploy.toadd"/>
  <property name="deploy.docs.svn-filestoadd"  location="build/svn-docs.deploy.toadd"/>
  <property name="deploy.plugins.sandbox.dir" location="${deploy.plugins.svn-dir}"/>
  <property name="deploy.docs.sandbox.dir"    location="${deploy.docs.svn-dir}"/>
  <property name="build.dir"                  location="build"/>
  <property name="build.classes"              location="${build.dir}/classes"/>
  <property name="build.docs"                 location="${build.dir}/site"/>
  <taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
      <fileset dir="${forrest.ant.lib.dir}" includes="ant-contrib-*.jar" />
    </classpath>
  </taskdef>
  <taskdef resource="taskdef.properties">
    <classpath>
      <fileset dir="${forrest.ant.lib.dir}" includes="jsvn-0.9-dev.jar"/>
    </classpath>
  </taskdef>
  <target name="init" depends="init-build-compiler, echo-init"/>
  <target name="init-build-compiler">
    <fail unless="plugin-name" message="You must run plugin build targets from within the plugin directory."/>
    <tstamp>
      <format property="YEAR" pattern="yyyy" locale="en"/>
    </tstamp>
    <property name="build.compiler.emacs"       value="on"/>
    <property name="build.compiler.warnings"    value="true"/>
    <property name="build.compiler.pedantic"    value="false"/>
    <property name="build.compiler.depend"      value="true"/>
    <property name="build.compiler.fulldepend"  value="true"/>
    <property name="build.compiler.debug"       value="on"/>
    <property name="build.compiler.optimize"    value="off"/>
    <property name="build.compiler.deprecation" value="on"/>
    <property name="build.compiler.nowarn"      value="on"/>
    <property name="build.compiler.type"        value="classic"/>
    <property name="build.compiler.vm"          value="1.4"/>
    <mkdir dir="${build.dir}"/>
    <path id="classpath">
      <fileset dir="${forrest.home}/lib" includes="**/*.jar"/>
      <fileset dir="${plugin.lib.dir}" includes="*.jar"/>
      <fileset dir="${plugin.lib.dir}" includes="*.zip"/>
    </path>
    <available file="${plugin.java.dir}" property="java_exists" type="dir"/>
  </target>
  <target name="echo-init" depends="init-build-compiler" unless="no.echo.init">
    <buildnumber file="${build.dir}/build.number"/>
    <echo>
      --------------------------------------------------------------

      Using ${ant.version}
      Build file ${ant.file}
      Use 'build.[sh|bat] -projecthelp' to see other options.
      Build system home ${ant.home}
      Build number ${build.number}
      Project Name ${ant.project.name}
      Java Version ${ant.java.version}      
      Timestamp ${DSTAMP}${TSTAMP}
      
      --------------------------------------------------------------
    </echo>
  </target>
  <target name="clean" depends="init">
    <delete dir="${forrest.plugins.localDeploy.dir}/${plugin-name}"/>
    <delete dir="${forrest.plugins.dist.dir}"/>
  </target>
  <target name="local-deploy"
          description="Deploy a plugin locally"
          depends="init, jar">
    <echo>Locally deploying ${plugin-name}</echo>
    <copy toDir="${forrest.plugins.localDeploy.dir}/${plugin-name}">
      <fileset dir="${forrest.plugins.dir}/${plugin-name}">
        <exclude name="lib/**"/>
        <exclude name="build/**"/>
      </fileset>
    </copy>
    <if>
      <available file="${build.dir}/${plugin-name}.jar"/>
      <then>
        <copy toFile="${forrest.plugins.localDeploy.dir}/lib/${plugin-name}.jar"
            file="${build.dir}/${plugin-name}.jar"
            failonerror="false"/>
      </then>
    </if>
<!-- add to the entity catalog -->
    <copy file="${forrest.core}/var/initial_catalog.xcat"
        tofile="${forrest.plugins.localDeploy.dir}/catalog.xcat"
        overwrite="false"/>
    <if>
      <available file="${forrest.plugins.localDeploy.dir}/${plugin-name}/resources/schema/catalog.xcat"/>
      <then>
        <xslt in="${forrest.plugins.localDeploy.dir}/catalog.xcat"
             out="${forrest.plugins.localDeploy.dir}/catalog.xcat.new"
             style="${forrest.core}/var/catalogMountSnippet.xsl"
             force="true">
          <param name="plugin-catalog-path"
             expression="${plugin-name}/resources/schema/catalog.xcat"/>
        </xslt>
        <move file="${forrest.plugins.localDeploy.dir}/catalog.xcat.new"
           tofile="${forrest.plugins.localDeploy.dir}/catalog.xcat"/>
      </then>
    </if>
    <if>
      <available file="lib"/>
      <then>
        <copy toDir="${forrest.plugins.localDeploy.dir}/lib" failonerror="false">
          <fileset dir="lib"/>
        </copy>
      </then>
    </if>
    <antcall target="build"/>
  </target>
  <target name="build"
          description="Any local actions that need to be carried out by the plugin are done here"/>
  <target name="deploy-plugins.xml"
          description="Deployes the plugins descriptor file (plugins.xml) to the website SVN repository"
          depends="checkout-deployed-plugins">
    <copy todir="${deploy.plugins.svn-dir}" 
          overwrite="true"
          file="${forrest.plugins.descriptor.file}"/>
<!-- check in to SVN -->
    <svncommit
        target="${deploy.plugins.svn-dir}"
        repositoryurl="${deploy.plugins.svn.url}"
        commitmessage="Deployment plugins descriptor file plugins.xml (deployed by 'deploy-plugins.xml' target of plugin build script)"
    />
  </target>
  <target name="deploy-docs"
		  description="Deploy the plugin documentation"
		  depends="clean, dist, docs, checkout-deployed-docs, deploy-plugins.xml">
    <echo>Deploying plugin documentation to the web server</echo>
	<if>
        <contains string="${forrest.version}" substring="0.7"/>
      <then>
        <property name="docsVersion" value="0_70"/>
      </then>
    <else>
    <if>
      <contains string="${forrest.version}" substring="0.8"/>
      <then>
        <property name="docsVersion" value="0_80"/>
      </then>
      <else>
        <if>
          <contains string="${forrest.version}" substring="0.9"/>
          <then>
            <property name="docsVersion" value="0_90"/>
          </then>
          <else>
<!-- FIXME: the docs version number should be derived programmatically from the forrest.version in use 
                 (see http://issues.apache.org/jira/browse/FOR-535) -->
            <fail message="Trying to deploy plugin docs to an unknown version of Forrest. Please update the plugin's build file."/>
          </else>
        </if>
      </else>
    </if>
  </else>
</if>
<!-- Copy plugin docs into sandbox -->
    <copy todir="${deploy.docs.sandbox.dir}/plugins_${docsVersion}/${plugin-name}" 
  	      overwrite="true">
      <fileset dir="${build.docs}"/>
    </copy>
<!-- Fix inconsitent line endings -->
    <fixcrlf srcdir="${deploy.docs.sandbox.dir}/plugins_${docsVersion}/${plugin-name}" eol="unix">
      <include name="**/*.html"/>
      <include name="**/*.xml"/>
      <include name="**/*.css"/>
      <include name="**/*.js"/>
    </fixcrlf>
<!-- add new files to SVN -->
<!-- svnadd doesn't work (it doesn't change the working directory properly) -->
    <exec executable="svn" dir="${deploy.docs.svn-dir}" output="${deploy.docs.svn-filestoadd}" failonerror="true">
      <arg value="status"/>
    </exec>
<!-- the status columns make all lines invalid filenames
      we remove the status columns for the new files so the only valid
      filenames in the list are new files
    -->
    <replace file="${deploy.docs.svn-filestoadd}" token="?      " value=""/>
    <replace file="${deploy.docs.svn-filestoadd}" token="M      " value=""/>
<!-- don't fail on error here because
      1) the targets file might have 'bad' filenames but we should continue
      2) we would've already failed if the svn executable wasn't found
    -->
    <exec executable="svn" dir="${deploy.docs.svn-dir}">
      <arg value="add"/>
      <arg value="--targets"/>
      <arg value="${deploy.docs.svn-filestoadd}"/>
    </exec>
<!-- check in to SVN -->
    <svncommit
        target="${deploy.docs.svn-dir}/plugins_${docsVersion}"
        repositoryurl="${deploy.plugins.svn.url}"
        commitmessage="Deployment of docs for ${plugin-name} plugin (deployed by 'deploy-docs' target of plugin build script)"
    />
  </target>
  <target name="release"
          description="Release the versioned plugin to the website SVN to make it available for download"
          depends="clean, deploy-plugins.xml, deploy-docs, dist, checkout-deployed-plugins">
    <echo>Releasing versioned plugin ${plugin-name} to the download server</echo>
<!-- Put versioned plugin in the ${forrest.version} directory -->
    <copy todir="${deploy.plugins.svn-dir}/${forrest.version}" 
          overwrite="true" 
          file="${forrest.plugins.dist.dir}/${forrest.version}/${plugin-name}-${plugin-version}.zip"/>
    <antcall target="updateSVN"/>
    <echo>
You have just released a plugin. There are other tasks to complete. For example:
- release emails
- SVN tagging
<!-- FIXME: these tasks can be automated in this build file -->
    </echo>
  </target>
  <target name="updateSVN"
          description="Update SVN with the files in the sandbox">
<!-- add new files to SVN -->
<!-- svnadd doesn't work (it doesn't change the working directory properly) -->
    <exec executable="svn" dir="${deploy.plugins.svn-dir}" output="${deploy.plugins.svn-filestoadd}" failonerror="true">
      <arg value="status"/>
    </exec>
<!-- the status columns make all lines invalid filenames
      we remove the status columns for the new files so the only valid
      filenames in the list are new files
    -->
    <replace file="${deploy.plugins.svn-filestoadd}" token="?      " value=""/>
    <replace file="${deploy.plugins.svn-filestoadd}" token="M      " value=""/>
<!-- don't fail on error here because
      1) the targets file might have 'bad' filenames but we should continue
      2) we would've already failed if the svn executable wasn't found
    -->
    <exec executable="svn" dir="${deploy.plugins.svn-dir}">
      <arg value="add"/>
      <arg value="--targets"/>
      <arg value="${deploy.plugins.svn-filestoadd}"/>
    </exec>
<!-- check in to SVN -->
    <svncommit
        target="${deploy.plugins.svn-dir}"
        repositoryurl="${deploy.plugins.svn.url}"
        commitmessage="Deployment of ${plugin-name} plugin (deployed by 'deploy' target of plugin build script)"
    />
  </target>
  <target name="deploy"
          description="Deploy the unversioned plugin to the website SVN to make it available for download"
          depends="clean, deploy-plugins.xml, deploy-docs, dist, checkout-deployed-plugins">
    <echo>Deploying unversioned plugin ${plugin-name} to the download server</echo>
<!-- Put unversioned plugin in the ${forrest.version} directory -->
    <copy tofile="${deploy.plugins.svn-dir}/${forrest.version}/${plugin-name}.zip" 
            overwrite="true" 
            file="${forrest.plugins.dist.dir}/${forrest.version}/${plugin-name}-${plugin-version}.zip"/>
<!-- Put unversioned plugin in the top-level directory -->
    <copy tofile="${deploy.plugins.svn-dir}/${plugin-name}.zip" 
          overwrite="true" 
          file="${forrest.plugins.dist.dir}/${forrest.version}/${plugin-name}-${plugin-version}.zip"/>
    <antcall target="updateSVN"/>
  </target>
  <target name="checkout-deployed-docs" 
	      description="Retrieve the currently deployed plugin files">
<!-- get current plugins directory from SVN -->
    <svncheckout
        repositoryurl="${deploy.plugin.docs.svn.url}"
        username="${deploy.svn.user}"
        password="${deploy.svn.password}"
        destination="${deploy.docs.svn-dir}"
        failonerror="false"
    />
  </target>
  <target name="checkout-deployed-plugins" 
	      description="Retrieve the currently deployed plugin files">
<!-- get current plugins directory from SVN -->
    <svncheckout
        repositoryurl="${deploy.plugins.svn.url}"
        username="${deploy.svn.user}"
        password="${deploy.svn.password}"
        destination="${deploy.plugins.svn-dir}"
        failonerror="true"
    />
  </target>
  <target name="docs" depends="local-deploy">
    <echo>Building Docs for ${plugin-name}</echo>
    <ant antfile="${forrest.core}/forrest.build.xml" target="site">
      <property name="project.home" value="${basedir}"/>
    </ant>
  </target>
  <target name="dist"
          description="Build the distribution archive for a plugin"
          depends="jar">
    <mkdir dir="${forrest.plugins.dist.dir}/${forrest.version}"/>
    <zip destfile="${forrest.plugins.dist.dir}/${forrest.version}/${plugin-name}-${plugin-version}.zip">
      <zipfileset dir="${forrest.plugins.dir}/${plugin-name}">
        <include name="**"/>
        <exclude name="**/build/**"/>
      </zipfileset>
      <zipfileset dir="${build.dir}" prefix="lib">
        <include name="${plugin-name}.jar"/>
      </zipfileset>
    </zip>
  </target>
  <target name="seedPlugin"
    description="Create a new plugin directory in the current working directory and seed it with initial set of files">
    <input message="What is the name of the plugin you wish to create?"
           addproperty="plugin-name"/>
    <antcall target="init"/>
    <input message="Provide a brief description of what the plugin does"
           addproperty="plugin-desc"/>
    <input message="What type of plugin do you wish to create? "
           validargs="input,output,internal,theme"
           addproperty="plugin-type"/>
    <mkdir dir="${plugin-name}"/>
    <mkdir dir="${plugin-name}/${plugin.src.dir}"/>
    <mkdir dir="${plugin-name}/${plugin.resources.dir}"/>
    <mkdir dir="${plugin-name}/${plugin.stylesheets.dir}"/>
    <copy todir="${plugin-name}"
          filtering="true">
      <fileset dir="${forrest.plugins.template.dir}"/>
      <filterset>
        <filter token="forrest-version" value="${forrest.version}"/>
        <filter token="plugin-name" value="${plugin-name}"/>
        <filter token="plugin-type" value="${plugin-type}"/>
        <filter token="plugin-desc" value="${plugin-desc}"/>
        <filter token="plugin-docServer" value="${plugin.docServer}"/>
        <filter token="plugin-docPath" value="${plugin.docPath}"/>
        <filter token="plugin-downloadServer" value="${plugin.downloadServer}"/>
        <filter token="plugin-downloadPath" value="${plugin.downloadPath}"/>
      </filterset>
    </copy>
    <move file="${plugin-name}/sitemap.xmap"
          tofile="${plugin-name}/${plugin-type}.xmap"/>
  </target>
<!-- =================================================================== -->
<!-- Compile java classes                                         -->
<!-- =================================================================== -->
  <target name="compile" depends="init" if="java_exists">
    <mkdir dir="${build.classes}"/>
    <javac srcdir=   "${plugin.java.dir}"
      destdir=       "${build.classes}"
      source=        "${build.compiler.vm}"
      target=        "${build.compiler.vm}"
      debug=         "${build.compiler.debug}"
      optimize=      "${build.compiler.optimize}"
      deprecation=   "${build.compiler.deprecation}"
      nowarn=        "${build.compiler.nowarn}"
      classpathref=  "classpath"></javac>
    <copy todir="${build.classes}">
      <fileset dir="${plugin.java.dir}">
        <exclude name="**/*.java"/>
      </fileset>
    </copy>
  </target>
<!-- =================================================================== -->
<!-- Jar Cocoon classes                                                  -->
<!-- =================================================================== -->
  <target name="jar" depends="init, compile" if="java_exists">
    <jar destfile="${build.dir}/${plugin-name}.jar"
	     basedir="${build.classes}">
      <manifest>
        <section name="org/apache/forrest/">
          <attribute name="Comment" value="Support classes for Apache Forrest"/>
          <attribute name="Implementation-Title" value="org.apache.forrest"/>
          <attribute name="Implementation-Version" value="${forrest.version} ${TODAY}"/>
          <attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
          <attribute name="Implementation-URL" value="http://forrest.apache.org/"/>
        </section>
      </manifest>
    </jar>
  </target>
  <target name="test" depends="init, clean, docs"/>
</project>
