<?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="Apache Ranger Release Tasks" default="build-release">
    <description>
        Apache Ranger Build Release Tasks
    </description>
	
    <property name="release-dir"  value="target" />
    <property name="incubationstr" value="" />     <!-- value="-incubating" -->
	<property name="release-name" value="apache-ranger${incubationstr}-${ranger-release-version}" />

	<property name="build-release-tar-file" value="${release-name}.tar.gz" />

 	<target name="version-check">
		<fail message="Missing ranger-release-version; -Dranger-release-version=&lt;version-number&gt; should be defined" 
			  unless="ranger-release-version" />
    </target>
	
	<target name="build-release" depends="version-check">
		<tstamp/>
		<exec executable="mvn">
			<arg value="clean" />
        </exec>
		<mkdir dir="${release-dir}" />
		<tar destfile="${release-dir}/${build-release-tar-file}" compression="gzip" longfile="posix">
			<tarfileset prefix="${release-name}" dir=".">
				<exclude name="*/bin/**" />
				<exclude name="git" />
				<exclude name="**/.DS_Store" />
				<exclude name="**/.classpath" />
				<exclude name="**/.gitignore" />
				<exclude name="**/.project" />
				<exclude name="**/.settings/**" />
				<exclude name="**/target/**" />
				<exclude name="hdfs-agent/dependency-reduced-pom.xml" />
				<exclude name="winpkg/*" />
			</tarfileset>
		</tar>

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${release-dir}/${build-release-tar-file}.asc" />
			<arg value="--detach-sig" />
			<arg value="${release-dir}/${build-release-tar-file}" />
		</exec>

                <exec executable="gpg" output="${release-dir}/${build-release-tar-file}.sha256" dir="${release-dir}">
                        <arg value="--print-md" />
                        <arg value="SHA256" />
                        <arg value="${build-release-tar-file}" />
                </exec>

                <exec executable="gpg" output="${release-dir}/${build-release-tar-file}.sha512" dir="${release-dir}">
                        <arg value="--print-md" />
                        <arg value="SHA512" />
                        <arg value="${build-release-tar-file}" />
                </exec>

	</target>

</project>
