<?xml version="1.0" encoding="UTF-8"?>

<!--
   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 name="gora" default="publish-local-all" 
  xmlns:ivy="antlib:org.apache.ivy.ant">

  <property name="year" value="2010" />
  <property name="project.dir" value="${basedir}"/>
  <property name="version" value="0.1.1-incubating" />
  <property name="final.name" value="${ant.project.name}-${version}" />

  <property name="dist.base.dir" value="${basedir}/dist"/>
  <property name="dist.dir" value="${dist.base.dir}/${final.name}"/>

  <property name="build.dir" value="${basedir}/build" />
  <property name="docs.dir" value="${basedir}/docs" />
  <property name="build.docs" value="${build.dir}/docs" />  
  <property name="build.javadoc" value="${build.docs}/api/" />
  <property name="javadoc.link.java" value="http://java.sun.com/javase/6/docs/api/" />
  <property name="javadoc.link.hadoop" value="http://hadoop.apache.org/common/docs/r0.20.2/api/" />
  <property name="javadoc.link.avro" value="http://avro.apache.org/docs/1.3.3/api/java/" />
  <property name="build.javadoc.timestamp" value="${build.javadoc}/index.html" />

  <!-- module directories -->
  <property name="src.dir" value="src/main/java" />
  <property name="conf.dir" value="conf" />
  <property name="lib.dir" value="lib" />
  <property name="lib-ext.dir" value="lib-ext" />
  <property name="build.classes.dir" value="build/classes" />


  <!-- Load all the default properties, and any the user wants    -->
  <!-- to contribute (without having to type -D or edit this file -->
  <property file="${user.home}/build.properties" />
  <property file="${basedir}/build.properties" />
  <property file="${basedir}/default.properties" />
  
  <!-- setup ivy default configuration with some custom info -->
  <property name="ivy.file" value="ivy.xml" />
  <property name="ivy.version" value="2.1.0" />
  <property name="ivy.dir" value="${basedir}/ivy" />
  <property name="project.ivy.dir" value="${project.dir}/ivy" />
  <property name="ivy.jar" location="${project.ivy.dir}/ivy-${ivy.version}.jar" />
  <property name="ivy.repo.url" value="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" />

  <property name="ivy.local.default.root" value="${ivy.default.ivy.user.dir}/local" />
  <property name="ivy.local.default.ivy.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" />
  <property name="ivy.local.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" />

  <property name="ivy.shared.default.root" value="${ivy.default.ivy.user.dir}/shared" />
  <property name="ivy.shared.default.ivy.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" />
  <property name="ivy.shared.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" />

  <!-- target: init  ================================================ -->
  <target name="init" depends="ivy-init">
    <chmod dir="bin" perm="ugo+rx" includes="*.sh, gora"/>
  </target>

  <!-- target: -buildlist  ================================================ -->    
  <target name="-buildlist" depends="init">
    <ivy:buildlist reference="build-path" ivyfilepath="ivy/${ivy.file}">
      <fileset dir="." includes="*/build.xml" excludes="build.xml"/>
    </ivy:buildlist>
  </target>
  
  <target name="compile" depends="-buildlist">
    <subant target="compile" buildpathref="build-path" />
  </target>

  <target name="jar" depends="-buildlist">
    <subant target="jar" buildpathref="build-path" />
  </target>

  <target name="jar-snapshot" depends="-buildlist, jar" description="copies the jar files to append timestamp to artifact name">
    <subant target="jar-snapshot" buildpathref="build-path" />
  </target>

  <target name="compile-test" depends="publish-local-all-test">
  </target>

  <target name="test-jar" depends="publish-local-all-test"/>

  <target name="test-jar-snapshot" depends="test-jar" description="copies the jar files to append timestamp to artifact name">
    <subant target="test-jar-snapshot" buildpathref="build-path" />
  </target>

  <target name="test" depends="publish-local-all-test">
    <subant target="test" buildpathref="build-path" />
  </target>

  <!-- ================================================================== -->
  <!-- Documentation                                                      -->
  <!-- ================================================================== -->

  <path id="classpath">
    <dirset dir=".">
      <include name="*/${build.classes.dir}"/>
      <include name="*/${conf.dir}"/>
    </dirset>    

    <fileset dir=".">
      <include name="**/*.jar" />
    </fileset>
  </path>

  <target name="javadoc-uptodate" depends="compile">
    <uptodate property="javadoc.is.uptodate">
      <srcfiles dir="${project.dir}/gora-core/${src.dir}">
        <include name="**/*.java" />
        <include name="**/*.html" />
      </srcfiles>
      <mapper type="merge" to="${build.javadoc.timestamp}" />
    </uptodate>
  </target>
 
  <target name="javadoc" description="Generate javadoc" depends="javadoc-uptodate"
       unless="javadoc.is.uptodate">
    <mkdir dir="${build.javadoc}"/>
    <javadoc
      overview="gora-core/${src.dir}/overview.html"
      destdir="${build.javadoc}"
      author="true"
      version="true"
      use="true"
      windowtitle="Apache Gora API"
      doctitle="Apache Gora API"
      bottom="Copyright &amp;copy; ${year} The Apache Software Foundation">

      <packageset dir="gora-core/src/main/java"/>
      <packageset dir="gora-cassandra/src/main/java"/>
      <packageset dir="gora-hbase/src/main/java"/>
      <packageset dir="gora-sql/src/main/java"/>
      
      <link href="${javadoc.link.java}"/>
      <link href="${javadoc.link.avro}"/>
      <link href="${javadoc.link.hadoop}"/>
      
      <classpath refid="classpath"/>

      <group title="Core" packages="org.apache.gora.*"/>
      <group title="Cassandra Module" packages="org.apache.gora.cassandra.*"/>
      <group title="HBase Module" packages="org.apache.gora.hbase.*"/>
      <group title="Sql Module" packages="org.apache.gora.sql.*"/>

    </javadoc>
  </target>

  <target name="docs" depends="forrest.check, javadoc" description="Generate forrest-based documentation. To use, specify -Dforrest.home=&lt;base of Apache Forrest installation&gt; on the command line." if="forrest.home">
    <exec dir="${docs.dir}" executable="${forrest.home}/bin/forrest" failonerror="true">
      <arg value="-Dforrest.validate.xdocs.failonerror=false"/>
      <arg value="-Dproject.build-dir=${build.docs}"/>
    </exec>

    <copy todir="${build.docs}/site/api/" includeEmptyDirs="false">
      <fileset dir="${build.javadoc}"/>
    </copy>
    
  </target>

  <target name="forrest.check" unless="forrest.home">
    <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=&lt;base of Apache Forrest installation&gt; to Ant on the command-line." />
  </target>

  <!-- ================================================================== -->
  <!-- Distribution                                                       -->
  <!-- ================================================================== -->
  <target name="package" depends="-buildlist, test-jar"
	  description="Build distribution">

    <subant target="package" buildpathref="build-path" />

    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${dist.dir}/bin"/>
    <mkdir dir="${dist.dir}/docs"/>
    <mkdir dir="${dist.dir}/docs/api"/>
    
    <copy todir="${dist.dir}/bin">
      <fileset dir="bin"/>
    </copy>

    <copy todir="${dist.dir}/conf">
      <fileset dir="${conf.dir}" excludes="**/*.template"/>
    </copy>

    <copy todir="${dist.dir}/ivy">
      <fileset dir="ivy">
        <exclude name="ivy*.jar"/>
      </fileset>
    </copy>

    <copy todir="${dist.dir}">
      <fileset dir=".">
        <include name="*.txt" />
        <include name="*.xml" />
      </fileset>
    </copy>

    <copy todir="${dist.dir}/docs">
      <fileset dir="${build.docs}/site"/>
    </copy>

    <chmod perm="ugo+x" type="file" parallel="false">
        <fileset dir="${dist.dir}/bin"/>
    </chmod>

    <!-- modules -->
    <copy todir="${dist.dir}/gora-core">
      <fileset dir="gora-core/build/gora-core"/>
    </copy>
    <copy todir="${dist.dir}/gora-cassandra">
      <fileset dir="gora-cassandra/build/gora-cassandra"/>
    </copy>
    <copy todir="${dist.dir}/gora-hbase">
      <fileset dir="gora-hbase/build/gora-hbase"/>
    </copy>
    <copy todir="${dist.dir}/gora-sql">
      <fileset dir="gora-sql/build/gora-sql"/>
    </copy>
  </target>

  <macrodef name="macro_tar" description="Worker Macro for tar">
    <attribute name="param.destfile"/>
    <element name="param.listofitems"/>
    <sequential>
      <tar compression="gzip" longfile="gnu"
      destfile="@{param.destfile}">
      <param.listofitems/>
      </tar>
    </sequential>
  </macrodef>

  <macrodef name="macro_zip" description="Worker Macro for zip">
    <attribute name="param.destfile"/>
    <element name="param.listofitems"/>
    <sequential>
      <zip destfile="@{param.destfile}">
      <param.listofitems/>
      </zip>
    </sequential>
  </macrodef>

  <!-- ================================================================== -->
  <!-- Make release tarball                                               -->
  <!-- ================================================================== -->
  <target name="tar" depends="package" description="Make release tarball">
    <macro_tar param.destfile="${dist.base.dir}/${final.name}.tar.gz">
      <param.listofitems>
        <tarfileset dir="${dist.base.dir}" mode="664">
          <exclude name="${final.name}/bin/*" />
          <include name="${final.name}/**" />
        </tarfileset>
        <tarfileset dir="${dist.base.dir}" mode="755">
          <include name="${final.name}/bin/*" />
        </tarfileset>
      </param.listofitems>
    </macro_tar>
  </target>

  <!-- ================================================================== -->
  <!-- Make release zipball                                               -->
  <!-- ================================================================== -->
  <target name="zip" depends="package" description="Make release zipball">
    <macro_zip param.destfile="${dist.base.dir}/${final.name}.zip">
      <param.listofitems>
        <zipfileset dir="${dist.base.dir}">
          <exclude name="${final.name}/bin/*" />
          <include name="${final.name}/**" />
        </zipfileset>
        <zipfileset dir="${dist.base.dir}">
          <include name="${final.name}/bin/*" />
        </zipfileset>
      </param.listofitems>
    </macro_zip>
  </target>

  <!-- ================================================================== -->
  <!-- Publish Targets                                                    --> 
  <!-- ================================================================== -->

  <!-- target: publish-local-all  ========================================== --> 
  <target name="publish-local-all" depends="-buildlist"
                           description="publish the projects to local ivy repo">
    <subant target="publish-local" buildpathref="build-path" />
  </target>
  
  <!-- target: publish-local-all-test  ===================================== --> 
  <target name="publish-local-all-test" depends="-buildlist"
                           description="publish the projects test jars to local ivy repo">
    <subant target="publish-local-test" buildpathref="build-path" />
  </target>

  <!-- target: publish-all  ================================================ -->
  <target name="publish-all" depends="-buildlist" 
  			description="compile, jar and publish all projects in the right order">
    <subant target="publish" buildpathref="build-path" />
  </target>

  <!-- ================================================================== -->
  <!-- Clean Targets                                                      --> 
  <!-- ================================================================== -->

  <!-- target: clean-all  ================================================ -->
  <target name="clean-all" depends="-buildlist" description="clean all projects">
    <subant target="clean" buildpathref="build-path" />
  </target>

  <!-- target: clean  ================================================ -->  
  <target name="clean" depends="clean-all" 
  			description="clean all projects">
    <delete includeemptydirs="true" dir="${dist.base.dir}"/>
    <delete includeemptydirs="true" dir="${build.dir}"/>
  </target>

  <!-- target: clean-cache  ================================================ -->  
  <target name="clean-cache" depends="" 
  			description="delete ivy cache">
    <ivy:cleancache />
  </target>

  <!-- ================================================================== -->
  <!-- target: clean-docs                                                -->
  <!-- ================================================================== -->
  <target name="clean-docs">
    <delete dir="${build.docs}"/>
  </target>
  
  <!-- ================================================================== -->
  <!-- Ivy Targets                                                        --> 
  <!-- ================================================================== -->
  
  <!-- target: ivy-init  ================================================ -->
  <target name="ivy-init" depends="ivy-probe-antlib, ivy-init-antlib">
    <ivy:settings file="${project.ivy.dir}/ivysettings.xml" />
  </target>
  
  <!-- target: ivy-probe-antlib  ======================================== -->
  <target name="ivy-probe-antlib">
    <condition property="ivy.found">
      <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" />
    </condition>
  </target>

  <!-- target: ivy-download  ============================================ -->
  <target name="ivy-download" description="Download ivy">
    <available file="${ivy.jar}" property="ivy.jar.found"/>
    <antcall target="-ivy-download-unchecked"/>
  </target>

  <!-- target: ivy-download-unchecked  ================================== -->
  <target name="-ivy-download-unchecked" unless="ivy.jar.found">
    <get src="${ivy.repo.url}" dest="${ivy.jar}" usetimestamp="true" />
  </target>

  <!-- target: ivy-init-antlib  ========================================= -->
  <target name="ivy-init-antlib" depends="ivy-download" unless="ivy.found">
    <typedef uri="antlib:org.apache.ivy.ant" onerror="fail" loaderRef="ivyLoader">
      <classpath>
        <pathelement location="${ivy.jar}" />
      </classpath>
    </typedef>
    <fail>
      <condition>
        <not>
          <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" />
        </not>
      </condition>
      You need Apache Ivy 2.0 or later from http://ant.apache.org/
      It could not be loaded from ${ivy.repo.url}
    </fail>
  </target>
  
</project>
