<?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"/>
  <property file="${basedir}/build.properties"/>

  <!-- inherit from the java build file for version and other properties -->
  <property file="${thrift.java.dir}/gradle.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="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}"/>
    <mkdir dir="${build.tools.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}"/>
    </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="swc"
    >
      <remoteRepository refid="central"/>
      <remoteRepository refid="apache"/>
      <license name="The Apache Software License, Version 2.0" url="${license}"/>
      <scm connection="scm:git:https://git-wip-us.apache.org/repos/asf/thrift.git"
      developerConnection="scm:git:https://git-wip-us.apache.org/repos/asf/thrift.git"
      url="https://git-wip-us.apache.org/repos/asf?p=thrift.git"
      />
      <!-- 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"/>
      <developer id="jensg" name="Jens Geyer"/>
      <developer id="carl" name="Carl Yeksigian"/>
    </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>
