<?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="-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="git" />
				<exclude name="*/.gitignore" />
				<exclude name=".settings/**" />
				<exclude name="*/.settings/**" />
				<exclude name=".classpath" />
				<exclude name="*/.classpath" />
				<exclude name=".project" />
				<exclude name="*/.project" />
				<exclude name="winpkg/*" />
				<exclude name="hdfs-agent/dependency-reduced-pom.xml" />
				<exclude name="*/bin/**" />
				<exclude name="*/target/**" />
				<exclude name="**/.DS_Store" />
				<exclude name="target/**" />
			</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}.mds">
			<arg value="--print-mds" />
			<arg value="${release-dir}/${build-release-tar-file}" />
		</exec>

	</target>

</project>
