<?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 xmlns:artifact="artifact:org.apache.maven.artifact.ant">

    <macrodef name="_sign">
        <attribute name="inputFile"/>
        <sequential>
            <echo>Signing @{inputFile}</echo>
            <delete file="@{inputFile}.asc"/>
            <exec executable="gpg">
                <arg value="--armor"/>
                <arg value="--output"/>
                <arg value="@{inputFile}.asc"/>
                <arg value="--passphrase"/>
                <arg value="${gpg.passphrase}"/>
                <arg value="--detach-sig"/>
                <arg value="@{inputFile}"/>
            </exec>
        </sequential>
    </macrodef>

    <target name="mvn-init" unless="mvn-init.complete">
        <echo message="${ant.project.name}"/>
        <get src="${mvnrepo}/org/apache/maven/maven-ant-tasks/${maven-ant-tasks.version}/maven-ant-tasks-${maven-ant-tasks.version}.jar"
             dest="${path.to.basedir}/build/maven-ant-tasks-${maven-ant-tasks.version}.jar"
             usetimestamp="true"
             skipexisting="true"/>
        <taskdef resource="org/apache/maven/artifact/ant/antlib.xml"
                 uri="artifact:org.apache.maven.artifact.ant"
                 classpath="${path.to.basedir}/build/maven-ant-tasks-${maven-ant-tasks.version}.jar"/>
        <artifact:pom id="mvn.pom" file="pom.xml">
            <profile id="${_mvn.hadoop.profile}"/>
        </artifact:pom>
        <property name="mvn-init.complete" value="true"/>
    </target>

    <target name="_check-mvn-dependencies" unless="mvn-dependencies.complete">
        <available property="mvn-dependencies.complete"
                   file="${build.dir}/lib/.mvn-dependencies.complete"/>
    </target>

    <target name="mvn-dependencies"
            depends="mvn-init,_check-mvn-dependencies"
            unless="mvn-dependencies.complete">
        <echo message="${ant.project.name}"/>

        <artifact:dependencies pathId="mvn.compile.classpath"
          scopes="compile" pomRefId="mvn.pom">
            <localRepository path="${mvn.local.repo}"/>
        </artifact:dependencies>
        <mkdir dir="${build.dir}/lib/compile"/>
        <copy todir="${build.dir}/lib/compile">
            <path refid="mvn.compile.classpath"/>
        </copy>

        <artifact:dependencies pathId="mvn.test.classpath"
          scopes="compile, test" pomRefId="mvn.pom">
            <localRepository path="${mvn.local.repo}"/>
        </artifact:dependencies>
        <mkdir dir="${build.dir}/lib/test"/>
        <copy todir="${build.dir}/lib/test">
            <path refid="mvn.test.classpath"/>
        </copy>

        <touch file="${build.dir}/lib/.mvn-dependencies.complete"/>
    </target>

    <target name="mvn-deploy" depends="mvn-init" description="Deploy artifacts to a Maven repository.">
        <echo message="${ant.project.name}"/>
        <artifact:deploy file="${build.dir}/${ant.project.name}-${hcatalog.version}.jar"
          pomRefId="mvn.pom">
            <remoteRepository id="${mvn.deploy.repo.id}" url="${mvn.deploy.repo.url}"/>
        </artifact:deploy>
    </target>

    <target name="mvn-deploy-signed" depends="mvn-init"
            description="Sign and deploy artifacts to a Maven repository.">
        <echo message="${ant.project.name}"/>
        <_sign inputFile="${build.dir}/${ant.project.name}-${hcatalog.version}.jar"/>
        <_sign inputFile="${pom.file}"/>
        <artifact:deploy file="${build.dir}/${ant.project.name}-${hcatalog.version}.jar"
          pomRefId="mvn.pom">
            <attach file="${build.dir}/${ant.project.name}-${hcatalog.version}.jar.asc" type="jar.asc"/>
            <attach file="${pom.file}.asc" type="pom.asc"/>
            <remoteRepository id="${mvn.deploy.repo.id}" url="${mvn.deploy.repo.url}"/>
        </artifact:deploy>
    </target>

</project>
