<?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="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>
