<!--
 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="all">

    <target name="clean">
        <delete dir="build"/>
        <delete dir="tmp"/>
    </target>

    <target name="get-forrest-root">
        <property environment="env"/>
        <echo message="${env.FORREST_HOME}"/>
        <property name="forrest-root" value="${env.FORREST_HOME}"/>
    </target>
    
    <target name="calculate-forrest-condition" depends="get-forrest-root">
        <available file="${forrest-root}" property="forrestAvailable"/>
    </target>

    <target name="forrest-check" depends="calculate-forrest-condition" unless="forrestAvailable">
        <echo message="Site cannot be built without Apache Forrest installed"/>
    </target>
    
    <target name="calculate-dejavu-condition">
        <available file="fonts/dejavu-fonts-ttf-2.33.zip" property="dejavuAvailable"/>
    </target>

    <target name="dejavu-check" depends="download-dejavu-fonts,calculate-dejavu-condition" unless="dejavuAvailable">
        <echo message="Dejavu fonts cannot be built without dejavu-fonts-ttf-2.33.zip"/>
    </target>

    <target name="calculate-ipa-condition">
        <available file="fonts/IPAGTTC00303.zip" property="ipaAvailable"/>
    </target>

    <target name="ipa-check" depends="download-ipa-fonts,calculate-ipa-condition" unless="ipaAvailable">
        <echo message="IPA fonts cannot be built without IPAGTTC00303.zip"/>
    </target>

    <target name="setup-local-forrest" depends="forrest-check" if="forrestAvailable">
        <mkdir dir="tmp/forrest"/>
        <copy todir="tmp/forrest">
            <fileset dir="${forrest-root}"/>
        </copy>
        <chmod dir="tmp/forrest/bin" perm="ugo+rx" includes="forrest"/>
        <chmod dir="tmp/forrest/tools/ant/bin" perm="ugo+rx" includes="ant"/>
        <!-- Replace the fop jar with a more up-to-date version -->
        <delete file="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/lib/fop-0.95.jar"/>
        <delete file="tmp/forrest/build/plugins/lib/fop-0.95.jar"/>
        <copy todir="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/lib">
            <fileset dir="../lib">
                <include name="fop*.jar"/>
            </fileset>
        </copy>
        <!-- Same with the XML Graphics jar -->
        <delete file="tmp/forrest/lib/core/xmlgraphics-commons-1.3.1.jar"/>
        <copy todir="tmp/forrest/lib/core">
            <fileset dir="../lib">
                <include name="xmlgraphics-commons*.jar"/>
            </fileset>
        </copy>
        <!-- Replace the file tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/output.xmap with our own patched version -->
        <delete file="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/output.xmap"/>
        <copy todir="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf">
            <fileset dir="pdf">
                <include name="output.xmap"/>
                <include name="config.xml"/>
            </fileset>
        </copy>
        <dirname file="build.xml" property="project-path"/>
        <replace file="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/output.xmap" token="{root}" value="${project-path}"/>
        <replace file="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/config.xml" token="{root}" value="${project-path}"/>
        <delete file="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/document-to-fo.xsl"/>
        <copy todir="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets">
            <fileset dir="pdf">
                <include name="document-to-fo.xsl"/>
            </fileset>
        </copy>
        <delete file="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/helper-footerinfo.xsl"/>
        <copy todir="tmp/forrest/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets">
            <fileset dir="pdf">
                <include name="helper-footerinfo.xsl"/>
            </fileset>
        </copy>
    </target>

    <target name="build-dejavu-fonts" depends="dejavu-check" if="dejavuAvailable">
        <mkdir dir="tmp/font/dejavu-fonts"/>
        <unzip src="fonts/dejavu-fonts-ttf-2.33.zip" dest="tmp/font/dejavu-fonts"/>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="tmp/font/dejavu-fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSans.ttf"/>
            <arg value="tmp/font/DejaVuSans.xml"/>
        </java>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="tmp/font/dejavu-fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSans-Oblique.ttf"/>
            <arg value="tmp/font/DejaVuSans-Oblique.xml"/>
        </java>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="tmp/font/dejavu-fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSans-Bold.ttf"/>
            <arg value="tmp/font/DejaVuSans-Bold.xml"/>
        </java>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="tmp/font/dejavu-fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSerif.ttf"/>
            <arg value="tmp/font/DejaVuSerif.xml"/>
        </java>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="tmp/font/dejavu-fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSerif-Italic.ttf"/>
            <arg value="tmp/font/DejaVuSerif-Italic.xml"/>
        </java>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="tmp/font/dejavu-fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSerif-Bold.ttf"/>
            <arg value="tmp/font/DejaVuSerif-Bold.xml"/>
        </java>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="tmp/font/dejavu-fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSansMono.ttf"/>
            <arg value="tmp/font/DejaVuSansMono.xml"/>
        </java>

    </target>
    
    <target name="build-ipa-fonts" depends="ipa-check" if="ipaAvailable">
        <mkdir dir="tmp/font/ipa-fonts"/>
        <unzip src="fonts/IPAGTTC00303.zip" dest="tmp/font/ipa-fonts"/>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="-ttcname"/>
            <arg value="IPAPGothic"/>
            <arg value="tmp/font/ipa-fonts/IPAGTTC00303/ipag.ttc"/>
            <arg value="tmp/font/ipapgothic.xml"/>
        </java>
        <java classname="org.apache.fop.fonts.apps.TTFReader" fork="true">
            <classpath>
                <fileset dir="../lib">
                    <include name="fop*.jar"/>
                    <include name="xmlgraphics-commons*.jar"/>
                    <include name="avalon*.jar"/>
                    <include name="commons-io*.jar"/>
                    <include name="commons-logging*.jar"/>
                </fileset>
            </classpath>
            <arg value="-ttcname"/>
            <arg value="IPAGothic"/>
            <arg value="tmp/font/ipa-fonts/IPAGTTC00303/ipag.ttc"/>
            <arg value="tmp/font/ipagothic.xml"/>
        </java>

    </target>
    
    <target name="dependencies-check" depends="ipa-check,dejavu-check,forrest-check">
        <condition property="dependenciesAvailable">
          <and>
              <isset property="ipaAvailable"/>
              <isset property="dejavuAvailable"/>
              <isset property="forrestAvailable"/>
          </and>
        </condition>
    </target>
    
    <target name="dist" depends="setup-local-forrest,build-ipa-fonts,build-dejavu-fonts,dependencies-check" if="dependenciesAvailable">
        <dirname file="tmp/forrest/LICENSE.txt" property="forrest-dir"/>
        <echo message="${forrest-dir}"/>
        <exec executable="cmd.exe" dir="." searchpath="true" failonerror="true" osfamily="windows">
            <arg line="/c .\tmp\forrest\bin\forrest.bat site"/>
            <env key="JAVA_TOOL_OPTIONS" value="-Dfile.encoding=UTF8"/>
            <env key="FORREST_HOME" value="${forrest-dir}"/>
        </exec>
        <exec executable="./tmp/forrest/bin/forrest" dir="." searchpath="true" failonerror="true" osfamily="unix">
            <arg line="site"/>
            <env key="JAVA_TOOL_OPTIONS" value="-Dfile.encoding=UTF8"/>
            <env key="FORREST_HOME" value="${forrest-dir}"/>
        </exec>
    </target>
    
    <target name="calculate-dejavu-condition-before">
        <available file="fonts/dejavu-fonts-ttf-2.33.zip" property="dejavuAvailableBefore"/>
    </target>

    <target name="download-dejavu-fonts" depends="calculate-dejavu-condition-before" unless="dejavuAvailableBefore">
      <mkdir dir="fonts"/>
      <get src="http://downloads.sourceforge.net/project/dejavu/dejavu/2.33/dejavu-fonts-ttf-2.33.zip?r=&amp;ts=1327734867&amp;use_mirror=cdnetworks-us-2" dest="fonts"/>
    </target>
    
    <target name="calculate-ipa-condition-before">
        <available file="fonts/IPAGTTC00303.zip" property="ipaAvailableBefore"/>
    </target>

    <target name="download-ipa-fonts" depends="calculate-ipa-condition-before" unless="ipaAvailableBefore">
      <mkdir dir="fonts"/>
      <!-- http://ossipedia.ipa.go.jp/ipafont/download.html?ruleagreement=%E5%90%8C%E6%84%8F%E3%81%99%E3%82%8B%2FAccept -->
      <!-- get src="http://ossipedia.ipa.go.jp/ipafont/IPAGTTC00303.php" dest="fonts/IPAGTTC00303.zip"/ -->
      <!-- get src="http://info.openlab.ipa.go.jp/ipafont/fontdata/IPAGTTC00303.zip" dest="fonts"/ -->
      <!-- get src="http://ossipedia.ipa.go.jp/ipafont/ipafont/IPAGTTC00303.zip" dest="fonts"/ -->
      <get src="http://jaist.dl.sourceforge.jp/ipafonts/51867/IPAGTTC00303.zip" dest="fonts"/>
    </target>
    
    <target name="download-dependencies" depends="download-dejavu-fonts,download-ipa-fonts">
    </target>

    <target name="download-cleanup">
        <delete dir="fonts"/>
    </target>

    <target name="all" depends="dist"/>
    
</project>
