<?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 default="install" basedir=".">

    <property name="version" value="0.0.3"/>

    <!-- Set type to RELEASE in order to deploy to the release repo -->
    <property name="type" value="SNAPSHOT"/>

    <condition property="maven.version"
               value="${version}"
               else="${version}-SNAPSHOT">
        <equals arg1="${type}" arg2="RELEASE"/>
    </condition>

    <condition property="maven.repositoryId"
               value="apache.releases.https"
               else="apache.snapshots.https">
        <equals arg1="${type}" arg2="RELEASE"/>
    </condition>

    <condition property="maven.repositoryUrl"
               value="https://repository.apache.org/service/local/staging/deploy/maven2"
               else="https://repository.apache.org/content/repositories/snapshots">
        <equals arg1="${type}" arg2="RELEASE"/>
    </condition>

    <target name="package">
        <echo message="Preparing Maven artifacts vor version ${maven.version} ..."/>

        <delete dir="generated/maven"/>
        <mkdir dir="generated/maven"/>

        <copy file="maven/falcon-compiler.pom" tofile="generated/maven/falcon-compiler.pom">
            <filterchain>
                <tokenfilter>
                    <replacestring from="@VERSION@" to="${maven.version}"/>
                </tokenfilter>
            </filterchain>
        </copy>

        <antcall target="-pack-maven-artifact">
            <param name="moduleName" value="compiler"/>
            <param name="artifactName" value="falcon-compiler"/>
            <param name="fileName" value="../compiler/generated/dist/sdk/lib/compiler.jar"/>
        </antcall>

        <antcall target="-pack-maven-artifact">
            <param name="moduleName" value="flex-compiler-oem"/>
            <param name="artifactName" value="falcon-compiler-oem"/>
            <param name="fileName" value="../compiler/generated/dist/sdk/lib/flex-compiler-oem.jar"/>
        </antcall>

        <antcall target="-pack-maven-artifact">
            <param name="moduleName" value="compiler.jx"/>
            <param name="artifactName" value="falcon-jx-compiler"/>
            <param name="fileName" value="../compiler.jx/lib/jsc.jar"/>
        </antcall>
    </target>

    <target name="install" depends="package, -setup-aether-antlib">
        <echo message="Installing Maven artifacts ..."/>

        <antcall target="-install-maven-artifact-file">
            <param name="artifactName" value="falcon-compiler"/>
        </antcall>

        <antcall target="-install-maven-artifact-file">
            <param name="artifactName" value="falcon-compiler-oem"/>
        </antcall>

        <antcall target="-install-maven-artifact-file">
            <param name="artifactName" value="falcon-jx-compiler"/>
        </antcall>
    </target>

    <target name="deploy" depends="install">
        <echo message="Deploying Maven artifacts to repository with id ${maven.repositoryId} and url ${maven.repositoryUrl} ..."/>

        <antcall target="-deploy-maven-artifact-file">
            <param name="artifactName" value="falcon-compiler"/>
        </antcall>

        <antcall target="-deploy-maven-artifact-file">
            <param name="artifactName" value="falcon-compiler-oem"/>
        </antcall>

        <antcall target="-deploy-maven-artifact-file">
            <param name="artifactName" value="falcon-jx-compiler"/>
        </antcall>
    </target>

    <!--

        Internal helper targets.

    -->

    <target name="-setup-aether-antlib">
        <mkdir dir="utils"/>
        <get src="http://search.maven.org/remotecontent?filepath=org/eclipse/aether/aether-ant-tasks/1.0.0.v20140518/aether-ant-tasks-1.0.0.v20140518-uber.jar"
             dest="utils/aether-ant-tasks-uber.jar" verbose="true" skipexisting="true"/>
        <fail message="Checksum mismatch for 'antlib/aether-ant-tasks-uber.jar'. Please delete it and rerun ant to redownload.">
            <condition>
                <not>
                    <checksum file="utils/aether-ant-tasks-uber.jar" algorithm="SHA"
                              property="95dadd03392a75564904da45108cf048abe6e5bb" verifyproperty="checksum.matches"/>
                </not>
            </condition>
        </fail>
        <!-- Setup the maven-ant-tasks. -->
        <path id="aether-ant-tasks.classpath" path="utils/aether-ant-tasks-uber.jar" />
        <typedef resource="org/eclipse/aether/ant/antlib.xml"
                 uri="antlib:org.eclipse.aether.ant"
                 classpathref="aether-ant-tasks.classpath" />
    </target>

    <target name="-pack-maven-artifact">
        <echo message="Packing module ${moduleName} as Maven artifact ${artifactName}"/>
        <copy file="maven/${artifactName}.pom" tofile="generated/maven/${artifactName}.pom">
            <filterchain>
                <tokenfilter>
                    <replacestring from="@VERSION@" to="${maven.version}"/>
                </tokenfilter>
            </filterchain>
        </copy>
        <copy file="${moduleName}/${fileName}" tofile="generated/maven/${artifactName}.jar"/>
        <zip destfile="generated/maven/${artifactName}-sources.jar">
            <fileset dir="${moduleName}/src"/>
            <!--fileset dir="${moduleName}/generated/src"/-->
        </zip>
    </target>

    <target name="-install-maven-artifact-pom" depends="-setup-aether-antlib"
            xmlns:artifact="antlib:org.eclipse.aether.ant">
        <echo message="Installing Pom: ${artifactName}"/>
        <artifact:install>
            <artifact:pom file="generated/maven/${artifactName}.pom"/>
        </artifact:install>
    </target>

    <target name="-install-maven-artifact-file" depends="-setup-aether-antlib"
            xmlns:artifact="antlib:org.eclipse.aether.ant">
        <echo message="Installing File: ${artifactName}"/>
        <artifact:install>
            <artifact:pom file="generated/maven/${artifactName}.pom"/>
            <artifact:artifact file="generated/maven/${artifactName}.jar"/>
            <artifact:artifact file="generated/maven/${artifactName}-sources.jar" classifier="sources"/>
        </artifact:install>
    </target>

    <target name="-deploy-maven-artifact-pom" depends="-setup-aether-antlib"
            xmlns:artifact="antlib:org.eclipse.aether.ant">
        <echo message="Deploying Pom: ${artifactName} to ${maven.repositoryUrl}"/>
        <artifact:deploy>
            <artifact:remoterepo id="${maven.repositoryId}" url="${maven.repositoryUrl}"/>
            <artifact:pom file="generated/maven/${artifactName}.pom"/>
        </artifact:deploy>
    </target>

    <target name="-deploy-maven-artifact-file" depends="-setup-aether-antlib"
            xmlns:artifact="antlib:org.eclipse.aether.ant">
        <echo message="Deploying File: ${artifactName} to ${maven.repositoryUrl}"/>
        <artifact:deploy>
            <artifact:remoterepo id="${maven.repositoryId}" url="${maven.repositoryUrl}"/>
            <artifact:pom file="generated/maven/${artifactName}.pom"/>
            <artifact:artifact file="generated/maven/${artifactName}.jar"/>
            <artifact:artifact file="generated/maven/${artifactName}-sources.jar" classifier="sources"/>
        </artifact:deploy>
    </target>

</project>