<?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 name="libthrift-as3" default="compile" basedir="."
  xmlns:artifact="antlib:org.apache.maven.artifact.ant">
	
  <property name="as3.artifactid" value="${ant.project.name}"/>
	
  <property name="thrift.root" location="${basedir}/../../"/>
  <property name="thrift.java.dir" location="${thrift.root}/lib/java"/>
  <property name="build.tools.dir" location="${thrift.java.dir}/build/tools/"/>
  <property name="thrift_compiler" value="${thrift.root}/compiler/cpp/thrift"/> 

  <!-- inherit from the java build file for version and other properties -->
  <property file="${thrift.java.dir}/build.properties" />

  <property environment="env"/>

  <condition property="version" value="${thrift.version}">
    <isset property="release"/>
  </condition>
  <property name="version" value="${thrift.version}-snapshot"/>

  <property name="as3.final.name" value="${as3.artifactid}-${version}"/>

  <property name="src" value="${basedir}/src"/>
  <property name="build.dir" value="${basedir}/build"/>
  <property name="lib.dir" value="${basedir}/lib"/>

  <property name="as3.swc.file" location="${build.dir}/${as3.final.name}.swc"/>
  <property name="as3.pom.xml" location="${build.dir}/${as3.final.name}.pom"/>

  <target name="init" depends="setup.init,flex.init" unless="init.finished">
    <property name="init.finished" value="true"/>
  </target>

  <target name="setup.init">
    <tstamp/>
    <mkdir dir="${build.dir}"/>
  </target>

  <target name="flex.check" unless="FLEX_HOME">
    <fail message='You must set the FLEX_HOME property pointing to your flex SDK, eg. ant -DFLEX_HOME="/Applications/Adobe Flex Builder 3/sdks/3.2.0"'/>
  </target>
	
  <target name="flex.init" depends="flex.check" unless="flex.finished">
    <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />
    <property name="flex.finished" value="true"/>
  </target>

  <target name="compile" depends="init">
    <path id="as.src.files">
      <fileset dir="${src}/">
        <include name="**/*.as"/>
      </fileset>
    </path>
    <pathconvert 
      property="as.src.classes" 
      pathsep=" " 
      dirsep="." 
      refid="as.src.files"
    >
      <map from="${src}/" to=""/>
      <mapper type="glob" from="*.as" to="*"/>
    </pathconvert>

    <compc output="${as3.swc.file}" include-classes="${as.src.classes}">
      <source-path path-element="${src}"/>
      <compiler.include-libraries dir="${lib.dir}" append="true">
          <include name="as3crypto-1.3.0-library.swc" />
      </compiler.include-libraries>
    </compc>
  </target>

  <target name="clean">
    <delete dir="${build.dir}" />
  </target>

  <target name="mvn.ant.tasks.download" depends="setup.init,mvn.ant.tasks.check" unless="mvn.ant.tasks.found">
    <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/>
  </target>

  <target name="mvn.ant.tasks.check">
    <condition property="mvn.ant.tasks.found">
      <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/>
    </condition>
  </target>

  <target name="mvn.init" depends="mvn.ant.tasks.download" unless="mvn.finished">
    <echo message="${mvn.ant.task.jar}"/>
    <!-- Download mvn ant tasks, download dependencies, and setup pom file -->
    <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${build.tools.dir}/${mvn.ant.task.jar}"/>

    <!-- remote repositories used to download dependencies from -->
    <artifact:remoteRepository id="central" url="${mvn.repo}"/>
    <artifact:remoteRepository id="apache" url="${apache.repo}"/>

    <!-- Pom file information -->
    <artifact:pom id="pom" 
      groupId="${thrift.groupid}" 
      artifactId="${as3.artifactid}"
      version="${version}" 
      url="http://thrift.apache.org"
      name="Apache Thrift"
      description="Thrift is a software framework for scalable cross-language services development."
      packaging="pom"
    >
      <remoteRepository refid="central"/>
      <remoteRepository refid="apache"/>
      <license name="The Apache Software License, Version 2.0" url="${license}"/>
      <scm connection="scm:svn:http://svn.apache.org/repos/asf/thrift/trunk/" 
        developerConnection="scm:svn:http://svn.apache.org/repos/asf/thrift/trunk/"
        url="http://svn.apache.org/viewcvs.cgi/thrift"
      />
      <!-- Thrift Developers -->
      <developer id="mcslee" name="Mark Slee"/>
      <developer id="dreiss" name="David Reiss"/>
      <developer id="aditya" name="Aditya Agarwal"/>
      <developer id="marck" name="Marc Kwiatkowski"/>
      <developer id="jwang" name="James Wang"/>
      <developer id="cpiro" name="Chris Piro"/>
      <developer id="bmaurer" name="Ben Maurer"/>
      <developer id="kclark" name="Kevin Clark"/>
      <developer id="jake" name="Jake Luciani"/>
      <developer id="bryanduxbury" name="Bryan Duxbury"/>
      <developer id="esteve" name="Esteve Fernandez"/>
      <developer id="todd" name="Todd Lipcon"/>
      <developer id="geechorama" name="Andrew McGeachie"/>
      <developer id="molinaro" name="Anthony Molinaro"/>
      <developer id="roger" name="Roger Meier"/>
      <developer id="jfarrell" name="Jake Farrell"/>
    </artifact:pom>

    <!-- Generate the pom file -->
    <artifact:writepom pomRefId="pom" file="${as3.pom.xml}"/>

    <property name="mvn.finished" value="true"/>
  </target>

  <macrodef name="signAndDeploy">
    <!-- Sign and deploy jars to apache repo -->
    <attribute name="file"/>
    <attribute name="classifier" default=""/>
    <attribute name="packaging" default="jar"/>
    <attribute name="pom" default=""/>
    <sequential>
      <artifact:mvn fork="true">
        <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.1:sign-and-deploy-file"/>
        <arg value="-DrepositoryId=${maven-repository-id}"/>
        <arg value="-Durl=${maven-repository-url}"/>
        <arg value="-DpomFile=@{pom}"/>
        <arg value="-Dfile=@{file}"/>
        <arg value="-Dclassifier=@{classifier}"/>
        <arg value="-Dpackaging=@{packaging}"/>
        <arg value="-Pgpg"/>
      </artifact:mvn>
    </sequential>
  </macrodef>

  <target name="publish" depends="clean,compile,mvn.init">
    <!-- Compile, packages and then send release to apache maven repo -->
    <!-- run with: ant -Drelease=true publish -->
    <signAndDeploy file="${as3.pom.xml}" packaging="pom" classifier="" pom="${as3.pom.xml}"/>
    <signAndDeploy file="${as3.swc.file}" packaging="swc" classifier="" pom="${as3.pom.xml}"/>
  </target>	
</project>
