<?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.
-->
<!--
FORREST SITE BUILDER

 - The runtime part of Forrest
 - Contains actions Forrest can peform on any Forrest-using project.
 - This is typically called by forrest.bat or forrest
-->
<project default="site" basedir="." name="forrest">
  <property environment="env" />
  <property name="forrest.home"               location="${env.FORREST_HOME}" />
  <property name="forrest.version"            value="0.9-dev"/>
  <property name="forrest.lib-dir"            location="${forrest.home}/lib"/>
  <property name="forrest.core.lib-dir"       location="${forrest.lib-dir}/core"/>
  <property name="forrest.endorsed.lib-dir"   location="${forrest.lib-dir}/endorsed"/>
  <property name="forrest.optional.lib-dir"   location="${forrest.lib-dir}/optional"/>
  <property name="forrest.ant.lib-dir"        location="${forrest.home}/tools/ant/lib"/>
  <property name="forrest.anttasks"           location="${forrest.home}/tools/anttasks"/>
  <property name="forrest.jetty.lib-dir"      location="${forrest.home}/tools/jetty"/>
  <property name="forrest.build.lib-dir"      location="${forrest.home}/build"/>
  <property name="forrest.core"               location="${forrest.home}/main"/>
  <property name="forrest.core.webapp"        location="${forrest.core}/webapp"/>
  <import file="targets/validate.xml"/>
  <import file="targets/webapp.xml"/>
  <import file="targets/site.xml"/>
  <import file="targets/skins.xml"/>
  <import file="targets/plugins.xml"/>
  <import file="targets/context.xml"/>
  <import file="targets/seed.xml"/>
  <description>
    *=======================================================* | Forrest Site
    Builder | *=======================================================* Call
    this through the 'forrest' command
  </description>
  <taskdef name="jing" classname="com.thaiopensource.relaxng.util.JingTask">
    <classpath>
      <fileset dir="${forrest.core.lib-dir}" includes="jing*.jar" />
    </classpath>
  </taskdef>
  <taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
      <fileset dir="${forrest.ant.lib-dir}" includes="ant-contrib-*.jar" />
    </classpath>
  </taskdef>
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- **                    COMMON SETTINGS                          ** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
<!-- ===============================================================
       Loads user defined settings for local deployment.
       Steps back to defaults when they are not set.
       Echo's the settings if requested.
       =============================================================== -->
  <target name="init-props">
<!-- setting defaults for parameters -->
<!-- people should use -D switch, or <ant><property>s to override these   -->
    <property name="project.home" location="." />
    <property file="${project.home}/forrest.properties" />
    <property file="${user.home}/forrest.properties" />
    <property file="${global.home}/forrest.properties" />
    <property file="${forrest.core.webapp}/default-forrest.properties" />
<!-- people should use forrest.properties to override following defaults  -->
    <property name="build.plugins-dir"     value="build/plugins"/>
    <property name="forrest.skins-dir"     location="${forrest.core.webapp}/skins"/>
    <property name="forrest.plugins-dir"   location="${forrest.home}/${build.plugins-dir}"/>
<!-- If the user wants to build i18n in diferent locations this is one way to implemented it-->
    <if>
      <equals arg1="${project.i18n}" arg2="true"/>
      <then>
        <property name="project.site-dir"      location="${project.build-dir}/${project.site}/${user.language}"    />
      </then>
      <else>
        <property name="project.site-dir"      location="${project.build-dir}/${project.site}"    />
      </else>
    </if>
    <property name="project.war"           location="${project.build-dir}/${project.name}.war" />
    <property name="project.webapp"        location="${project.build-dir}/webapp" />
    <property name="project.cocoon-work-dir"    location="${project.temp-dir}/cocoon-work"      />
    <property name="project.brokenlinkfile" location="${project.temp-dir}/brokenlinks.xml"/>
    <property name="project.configfile"     value="${forrest.core.webapp}/WEB-INF/cli.xconf" />
    <property name="project.logkitfile"     value="${forrest.core.webapp}/WEB-INF/logkit.xconf" />
    <property name="project.logger"         value="debug" />
    <property name="status"      location="${project.home}/${project.status}" />
<!-- FIXME: rename project.content-dir to project.documentation-dir -->
    <property name="content-dir" location="${project.home}/${project.content-dir}" />
    <property name="raw-content-dir" location="${project.home}/${project.content-dir}/content" />
    <property name="sitemap-dir"     location="${project.home}/${project.sitemap-dir}" />
    <property name="xdocs-dir"   location="${project.home}/${project.xdocs-dir}" />
    <property name="catalog"     location="${project.home}/${project.catalog}" />
    <property name="skins-dir"   location="${project.home}/${project.skins-dir}" />
    <property name="skinconf"    location="${project.home}/${project.skinconf}" />
    <property name="conf-dir"    location="${project.home}/${project.conf-dir}" />
    <property name="lib-dir"     location="${project.home}/${project.lib-dir}" />
    <property name="classes-dir" location="${project.home}/${project.classes-dir}" />
    <property name="translations-dir" location="${project.home}/${project.translations-dir}" />
<!-- checks for presence of tools.jar -->
    <property name="tools.jar"           location="${java.home}/../lib/tools.jar"/>
    <available file="${tools.jar}"       property="tools.jar.present"/>
<!-- Define filters for project.* properties -->
    <mkdir dir="${project.temp-dir}"/>
    <property name="projfilters" value="${project.temp-dir}/projfilters.properties"/>
    <echoproperties prefix="project" destfile="${projfilters}"/>
    <filter filtersfile="${projfilters}"/>
    <filter token="forrest.home" value="${forrest.home}"/>
    <filter token="project.home" value="${project.home}"/>
    <available file="${content-dir}/jettyconf.xml"
      property="custom_jetty_config"/>
<!--
    Skin aliasing for backwards compatability
        0.5 => 0.6+
        krysalis-site => ... warn about future removal
        crust => old development, closest is the old krysalis-site
        forrest-site => ... warn about future removal
        forrest-css => pelt
        avalon-tigris => tigris
        tigris-style => tigris

    This must be kept in sync with ForrestConfModule.java/aliasSkinProperties()
    -->
    <if>
      <equals arg1="${project.skin}" arg2="forrest-css"/>
      <then>
        <property name="project.new-skin-name" value="pelt"/>
      </then>
      <elseif>
        <equals arg1="${project.skin}" arg2="avalon-tigris"/>
        <then>
          <property name="project.new-skin-name" value="tigris"/>
        </then>
      </elseif>
      <elseif>
        <equals arg1="${project.skin}" arg2="tigris-style"/>
        <then>
          <property name="project.new-skin-name" value="tigris"/>
        </then>
      </elseif>
      <elseif>
        <equals arg1="${project.skin}" arg2="crust"/>
        <then>
          <property name="project.new-skin-name" value="krysalis-site"/>
        </then>
      </elseif>
<!-- temporarily bring back krysalis-site
        <elseif>
            <equals arg1="${project.skin}" arg2="krysalis-site"/>
            <then>
                <property name="project.new-skin-name" value="pelt"/>
            </then>
        </elseif>
        -->
<!-- temporarily bring back forrest-site
        <elseif>
            <equals arg1="${project.skin}" arg2="forrest-site"/>
            <then>
                <property name="project.new-skin-name" value="crust"/>
            </then>
        </elseif>
        -->
    </if>
    <if>
      <isset property="project.new-skin-name"/>
      <then>
        <echo>
-- Warning --
skin "${project.skin}" no longer exists, the skin named
"${project.new-skin-name}" will be automatically used instead.

If this is the first time you see this, it means that you have
to regenerate and publish the *whole* site, so that all pages
are rendered with the "${project.new-skin-name}" skin.

If you fail to do so it is almost certain that the site will not
look right.

Please update forrest.properties to choose a new skin
and so remove this warning.
</echo>
        <var name="project.skin" value="${project.new-skin-name}"/>
      </then>
    </if>
    <if>
      <or>
        <equals arg1="${project.skin}" arg2="forrest-site"/>
        <equals arg1="${project.skin}" arg2="krysalis-site"/>
        <equals arg1="${project.skin}" arg2="crust"/>
      </or>
      <then>
        <echo>
-- Warning --
Using skin "${project.skin}" which is deprecated.
Please migrate to one of the new skins listed in forrest.properties.
The skin that most likely resembles these ones is called 'pelt'.
</echo>
      </then>
    </if>
<!-- echo settings in -Dforrest.echo=true mode -->
    <antcall target="echo-settings" />
<!-- Gather some build information about this Forrest instance,
      to be used later by Cocoon. -->
    <echo file="${project.temp-dir}/build-info.xml">&lt;info>
  &lt;project-skin>${project.skin}&lt;/project-skin>
  &lt;forrest-version>${forrest.version}&lt;/forrest-version>
&lt;/info>
    </echo>
  </target>
  <target name="examine-proj" depends="init-props">
    <available property="conf.present" file="${conf-dir}" type="dir"/>
    <available property="raw-content.present" file="${raw-content-dir}" type="dir"/>
    <available property="sitemap.present" file="${sitemap-dir}" type="dir"/>
    <available property="xdocs.present" file="${xdocs-dir}" type="dir"/>
    <available property="images.present" file="${images-dir}" type="dir"/>
    <available property="grammars.present" file="${grammars-dir}" type="dir"/>
    <available property="schema.present" file="${schema-dir}" type="dir"/>
    <available property="stylesheets.present" file="${stylesheets-dir}" type="dir"/>
    <available property="lib.present" file="${lib-dir}" type="dir"/>
    <available property="classes.present" file="${classes-dir}" type="dir"/>
    <available property="skins.present" file="${skins-dir}" type="dir"/>
    <available property="skinconf.present" file="${skinconf}"/>
    <available property="status.present" file="${status}"/>
  </target>
<!-- Load properties from user's skinconf.xml, if it is defined -->
  <target name="load-project-props" depends="validation-props, prepare-context" if="skinconf.present">
    <xslt in="${skinconf}"
          out="${project.temp-dir}/no-doctype-project-skinconf.xml"
          style="${forrest.core.webapp}/resources/stylesheets/strip-doctype.xsl">
      <xmlcatalog refid="fcatalog"/>
    </xslt>
    <xmlproperty file="${project.temp-dir}/no-doctype-project-skinconf.xml"
                 collapseattributes="true"/>
  </target>
<!-- Load properties from Forrest's default skinconf.xml, unless a user's is defined -->
  <target name="load-forrest-props" unless="skinconf.present">
    <xslt in="${forrest.core.webapp}/skinconf.xml"
           out="${project.temp-dir}/no-doctype-forrest-skinconf.xml"
           style="${forrest.core.webapp}/resources/stylesheets/strip-doctype.xsl">
      <xmlcatalog refid="fcatalog"/>
    </xslt>
<!-- Forrest skinconf should have been previously validated in build.xml -->
    <xmlproperty file="${project.temp-dir}/no-doctype-forrest-skinconf.xml"
                 collapseattributes="true"/>
  </target>
<!-- Define filters equating to elements in the skinconf.xml file. Skins can
  include tokens corresponding to skinconf.xml elements, and have them replaced
  at runtime.-->
  <target name="init-skinprops" depends="load-project-props, load-forrest-props">
    <mkdir dir="${project.temp-dir}"/>
    <property name="skinfilters" value="${project.temp-dir}/skinfilters.properties"/>
    <echoproperties prefix="skinconfig" destfile="${skinfilters}"/>
    <filter filtersfile="${skinfilters}"/>
    <condition property="use-lucene-indexer">
      <equals arg1="${skinconfig.search.provider}" arg2="lucene"/>
    </condition>
  </target>
  <target name="check-java-version">
<!-- check java version, else user may get a confusing java.lang.UnsupportedClassVersionError -->
    <if>
      <or>
        <equals arg1="${ant.java.version}" arg2="1.1"/>
        <equals arg1="${ant.java.version}" arg2="1.2"/>
        <equals arg1="${ant.java.version}" arg2="1.3"/>
      </or>
      <then>
        <fail>Java 1.4 or higher is required; found Java ${ant.java.version} in ${java.home}</fail>
      </then>
    </if>
    <echo message="This is apache-forrest-${forrest.version}"/>
    <echo message="Using Java ${ant.java.version} from ${java.home}"/>
  </target>
<!-- Sets up properties and filters -->
  <target name="init" depends="check-java-version, init-props, init-skins, init-plugins">
    <available property="xml-forrest.jar.exists" file="${forrest.build.lib-dir}/xml-forrest.jar"/>
    <fail unless="xml-forrest.jar.exists">You must build forrest before you can run it.  In ${forrest.home}/main run './build.sh' (linux) or 'build' (windows)</fail>
  </target>
<!-- ===============================================================
       Echo's the settings if requested. [-Dforrest.echo=true]
       =============================================================== -->
  <target name="echo-settings" if="forrest.echo">
    <loadfile property="echo-settings-message" srcFile="${forrest.core}/var/echo-settings-message.txt">
      <filterchain>
        <expandproperties/>
      </filterchain>
    </loadfile>
    <echo>${echo-settings-message}</echo>
  </target>
<!-- ===============================================================
       Set class-path.
       =============================================================== -->
  <target name="prepare-classpath" depends="prepare-context, -prepare-classpath"/>
  <target name="-prepare-classpath">
    <path id="forrest.cp">
      <pathelement path="${env.CLASSPATH}" />
      <pathelement location="${forrest.core.webapp}/WEB-INF/classes"/>
      <pathelement location="${forrest.build.lib-dir}/xml-forrest.jar"/>
      <pathelement location="${project.home}/${project.classes-dir}"/>
      <pathelement location="${project.build-dir}"/>
      <fileset dir="${forrest.plugins-dir}" casesensitive="no">
        <include name="**/lib/*.jar"/>
        <include name="**/lib/*.zip"/>
      </fileset>
      <fileset dir="${forrest.jetty.lib-dir}" casesensitive="no">
        <include name="*.jar"/>
        <include name="*.zip"/>
      </fileset>
      <fileset dir="${forrest.endorsed.lib-dir}"  casesensitive="no">
        <include name="*.jar"/>
        <include name="*.zip"/>
      </fileset>
      <fileset dir="${forrest.core.lib-dir}"  casesensitive="no">
        <include name="*.jar"/>
        <include name="*.zip"/>
      </fileset>
      <fileset dir="${forrest.optional.lib-dir}"  casesensitive="no">
        <include name="*.jar"/>
        <include name="*.zip"/>
      </fileset>
      <pathelement location="${tools.jar}"/>
    </path>
  </target>
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- **                  SITE BUILDING ACTIONS                      ** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
<!-- ===============================================================
       Cleans the site.  (typically before generating the new version)
       param: location to clean ${project.site-dir}
       param: location to clean ${project.temp-dir}
       param: location to clean ${project.webapp}
       param: file to clean ${project.brokenlinkfile}
       =============================================================== -->
  <target name="clean-site" depends="init-props"
      description="* Clean the project generated documents directory">
    <delete failonerror="false" dir="${project.site-dir}"/>
    <delete failonerror="false" file="${project.brokenlinkfile}"/>
  </target>
  <target name="clean-work" depends="init-props"
      description="* Clean the project work directories">
    <delete failonerror="false" dir="${project.temp-dir}"/>
    <delete failonerror="false" dir="${project.webapp}"/>
  </target>
  <target name="clean" depends="clean-site,clean-work"
      description="* Clean all directories and files generated during the build"/>
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- **              LOCAL SERVER RUN ACTION                        ** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
  <target name="run"
   depends="init, check-contentdir, ensure-content, run_custom_jetty, run_default_jetty"
   description="* Run Jetty (instant live webapp)"/>
  <target name="run_custom_jetty"
   if="custom_jetty_config"
   description="Run Jetty with configuration file found in the project">
    <echo>
  Note: Use Ctrl-C to stop the Jetty server
    </echo>
    <if>
      <os family="dos"/>
      <then>
        <echo>
         ... and reply 'n' and press [Enter] 
  	     when asked about aborting the batch!
      </echo>
      </then>
    </if>
    <java classname="org.mortbay.jetty.Server"
          dir="${forrest.core.webapp}"
          fork="yes"
          maxmemory="${forrest.maxmemory}"
          failonerror="yes">
      <classpath>
        <path refid="forrest.cp"/>
      </classpath>
      <jvmarg line="${forrest.jvmargs}"/>
      <jvmarg
         value="-Djava.endorsed.dirs=${java.endorsed.dirs}${path.separator}${forrest.endorsed.lib-dir}"/>
      <arg line="${content-dir}/jettyconf.xml" />
      <syspropertyset>
        <propertyref prefix="forrest."/>
        <propertyref prefix="project."/>
        <propertyref name="user.home"/>
        <propertyref name="global.home"/>
      </syspropertyset>
    </java>
  </target>
  <target name="run_default_jetty"
   description="Run Jetty with configuration file found in Forrest">
    <echo>
  Note: Use Ctrl-C to stop the Jetty server
    </echo>
    <if>
      <os family="dos"/>
      <then>
        <echo>
         ... and reply 'n' and press [Enter] 
  	     when asked about aborting the batch!
      </echo>
      </then>
    </if>
    <java classname="org.mortbay.jetty.Server"
          dir="${forrest.core.webapp}"
          fork="yes"
          maxmemory="${forrest.maxmemory}"
          failonerror="yes">
      <classpath>
        <path refid="forrest.cp"/>
      </classpath>
      <jvmarg line="${forrest.jvmargs}"/>
      <jvmarg
         value="-Djava.endorsed.dirs=${java.endorsed.dirs}${path.separator}${forrest.endorsed.lib-dir}"/>
      <arg value="${forrest.core.webapp}/jettyconf.xml" />
      <syspropertyset>
        <propertyref prefix="forrest."/>
        <propertyref prefix="project."/>
        <propertyref name="user.home"/>
        <propertyref name="global.home"/>
      </syspropertyset>
    </java>
  </target>
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- **                       PROXY SETTINGS                        ** -->
<!-- **                                                             ** -->
<!-- **                                                             ** -->
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
  <target name="init-proxy" if="proxy.host" unless="proxy.already.set">
    <echo>Using proxy : ${proxy.host}:${proxy.port}</echo>
    <if>
      <isset property="proxy.user"/>
      <then>
        <echo>Proxy connection : xxxxxx/xxxxxx (confidential)</echo>
        <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}" proxyuser="${proxy.user}" proxypassword="${proxy.password}"/>
      </then>
      <else>
        <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}"/>
      </else>
    </if>
  </target>
</project>
