<?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 Atlas Release Tasks" default="build-release">
	<description>
		Apache Atlas Build Release Tasks
	</description>

	<property name="release-dir"  value="target" />
	<property name="incubationstr" value="-incubating" />
	<property name="release-name" value="apache-atlas-${atlas-release-version}${incubationstr}" />

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

	<target name="version-check">
		<fail message="Missing atlas-release-version; -Datlas-release-version=&lt;version-number&gt; should be defined"
			unless="atlas-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>
