<!--
   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="IvyRelease" default="snapshot" 
		xmlns:ivy="antlib:org.apache.ivy.ant"
		xmlns:xooki="antlib:xooki">
	<import file="build.xml"/>
	
	<taskdef uri="antlib:xooki" file="${doc.src.dir}/xooki/antlib.xml" />

	<target name="generate-doc">
        <copy todir="${doc.build.dir}">
	        <fileset dir="${doc.src.dir}" includes="images/**,style/**,samples/**,js/**" />
        </copy>
		<!-- requires java 6 jdk in path and Apache Ant 1.7 -->
        <xooki:generate destDir="${doc.build.dir}" checkUpToDate="true">
			<fileset dir="${doc.src.dir}">
			    <include name="**/*.html"/>
			    <exclude name="template.html"/>
			    <exclude name="*Template.html"/>
			    <exclude name="conflict-solving-algo.html"/>
			    <exclude name="use.html"/>
			    <exclude name="samples/**"/>
			    <exclude name="js/**"/>
			    <exclude name="reports/**"/>
			    <exclude name="xooki/**"/>
			</fileset>
		</xooki:generate>
	</target>

	<target name="all-doc" depends="javadoc, generate-doc" />
	
	<target name="init-snapshot" depends="default-version">
		<property name="snapshot.full.name" value="apache-ivy-${build.version}" />
	</target>

	<target name="snapshot-metadata" depends="init-snapshot, resolve">
		<mkdir dir="${distrib.dir}"/>
		<ivy:deliver 
			deliverpattern="${distrib.dir}/ivy.xml" 
			pubrevision="${build.version}" 
			pubdate="${pubdate}"
		    status="${status}"/>
	</target>
	
	<target name="snapshot-src" depends="snapshot-metadata,all-doc">
		<mkdir dir="${distrib.dir}"/>
		<zip destfile="${distrib.dir}/${snapshot.full.name}-src.zip">
			<zipfileset dir="${doc.build.dir}" prefix="${snapshot.full.name}/doc" excludes="**/reports/coverage/**,**/reports/test/**"/>
			<zipfileset dir="${src.dir}" prefix="${snapshot.full.name}/src/java"/>
			<zipfileset dir="${basedir}/src/example" prefix="${snapshot.full.name}/src/example"/>
			<zipfileset dir="${basedir}/src/etc" prefix="${snapshot.full.name}/src/etc"/>
			<zipfileset dir="${test.dir}" prefix="${snapshot.full.name}/test/java"/>
			<zipfileset dir="${basedir}/test/repositories" prefix="${snapshot.full.name}/test/repositories"/>
			<zipfileset dir="${basedir}/test/buildlist" prefix="${snapshot.full.name}/test/buildlist"/>
			<zipfileset dir="${basedir}/test/triggers" prefix="${snapshot.full.name}/test/triggers" excludes="**/cache/**"/>
			<zipfileset dir="${basedir}/test/xsl" prefix="${snapshot.full.name}/test/xsl"/>
			<zipfileset dir="${src.dir}/org/apache/ivy/plugins/parser/xml" includes="ivy.xsd" fullpath="${snapshot.full.name}/ivy.xsd"/>
			<zipfileset dir="${basedir}" includes="META-INF/MANIFEST.MF" fullpath="${snapshot.full.name}/META-INF/MANIFEST.MF"/>
			<zipfileset dir="${basedir}" includes="NOTICE" fullpath="${snapshot.full.name}/NOTICE"/>
			<zipfileset dir="${basedir}" includes="README" prefix="${snapshot.full.name}"/>
			<zipfileset dir="${basedir}" includes="LICENSE*" prefix="${snapshot.full.name}"/>
			<zipfileset dir="${basedir}" includes="CHANGES.txt" fullpath="${snapshot.full.name}/CHANGES.txt"/>
			<zipfileset dir="${basedir}" includes="RELEASE_NOTES" fullpath="${snapshot.full.name}/RELEASE_NOTES"/>
			<zipfileset dir="${basedir}" includes="build.properties" fullpath="${snapshot.full.name}/build.properties"/>
			<zipfileset dir="${basedir}" includes="ant.patterns" fullpath="${snapshot.full.name}/ant.patterns"/>
			<zipfileset dir="${basedir}" includes="optional.patterns" fullpath="${snapshot.full.name}/optional.patterns"/>
			<zipfileset dir="${distrib.dir}" includes="ivy.xml" fullpath="${snapshot.full.name}/ivy.xml"/>

			<zipfileset dir="${basedir}" includes="build.xml" fullpath="${snapshot.full.name}/build.xml"/>
		</zip>
		<tar destfile="${distrib.dir}/${snapshot.full.name}-src.tar.gz" 
			compression="gzip" longfile="gnu">
			<zipfileset src="${distrib.dir}/${snapshot.full.name}-src.zip"/>
		</tar>
	</target>
	
	<target name="snapshot-bin-without-dependencies" depends="snapshot-metadata, jar, all-doc">
		<zip destfile="${distrib.dir}/${snapshot.full.name}-bin.zip">
			<zipfileset dir="${doc.build.dir}" prefix="${snapshot.full.name}/doc" excludes="**/reports/coverage/**,**/reports/test/**"/>
			<zipfileset dir="${basedir}/src/example" prefix="${snapshot.full.name}/src/example"/>
			<zipfileset dir="${basedir}" includes="NOTICE" fullpath="${snapshot.full.name}/NOTICE"/>
			<zipfileset dir="${basedir}" includes="README" prefix="${snapshot.full.name}"/>
			<zipfileset dir="${basedir}" includes="LICENSE*" prefix="${snapshot.full.name}"/>
			<zipfileset dir="${basedir}" includes="CHANGES.txt" fullpath="${snapshot.full.name}/CHANGES.txt"/>
			<zipfileset dir="${basedir}" includes="RELEASE_NOTES" fullpath="${snapshot.full.name}/RELEASE_NOTES"/>
			<zipfileset dir="${src.dir}/org/apache/ivy/plugins/parser/xml" includes="ivy.xsd" fullpath="${snapshot.full.name}/ivy.xsd"/>
			<zipfileset dir="${distrib.dir}" includes="ivy.xml" fullpath="${snapshot.full.name}/ivy.xml"/>
			<zipfileset dir="${basedir}" includes="build-for-bin-distrib.xml" fullpath="${snapshot.full.name}/build.xml"/>

			<zipfileset dir="${artifacts.build.dir}/jars" includes="${final.name}" fullpath="${snapshot.full.name}/ivy-${build.version}.jar"/>
			<zipfileset dir="${artifacts.build.dir}/jars" includes="${final.core.name}" fullpath="${snapshot.full.name}/ivy-core-${build.version}.jar"/>
		</zip>
		<tar destfile="${distrib.dir}/${snapshot.full.name}-bin.tar.gz" 
			compression="gzip" longfile="gnu">
			<zipfileset src="${distrib.dir}/${snapshot.full.name}-bin.zip"/>
		</tar>
	</target>

	<target name="snapshot-bin-with-dependencies" depends="snapshot-metadata, jar, all-doc">
		<delete dir="${build.dir}/lib" />
		<ivy:retrieve conf="default" pattern="${build.dir}/lib/[artifact]-[revision].[ext]" />
		<zip destfile="${distrib.dir}/${snapshot.full.name}-bin-with-deps.zip">
			<zipfileset dir="${doc.build.dir}" prefix="${snapshot.full.name}/doc" excludes="**/reports/coverage/**,**/reports/test/**"/>
			<zipfileset dir="${basedir}/src/example" prefix="${snapshot.full.name}/src/example"/>
			<zipfileset dir="${basedir}" includes="NOTICE" fullpath="${snapshot.full.name}/NOTICE"/>
			<zipfileset dir="${basedir}" includes="README" prefix="${snapshot.full.name}"/>
			<zipfileset dir="${basedir}" includes="LICENSE*" prefix="${snapshot.full.name}"/>
			<zipfileset dir="${basedir}" includes="CHANGES.txt" fullpath="${snapshot.full.name}/CHANGES.txt"/>
			<zipfileset dir="${basedir}" includes="RELEASE_NOTES" fullpath="${snapshot.full.name}/RELEASE_NOTES"/>
			<zipfileset dir="${src.dir}/org/apache/ivy/plugins/parser/xml" includes="ivy.xsd" fullpath="${snapshot.full.name}/ivy.xsd"/>
			<zipfileset dir="${distrib.dir}" includes="ivy.xml" fullpath="${snapshot.full.name}/ivy.xml"/>
	
			<zipfileset dir="${artifacts.build.dir}/jars" includes="${final.name}" fullpath="${snapshot.full.name}/ivy-${build.version}.jar"/>
			<zipfileset dir="${artifacts.build.dir}/jars" includes="${final.core.name}" fullpath="${snapshot.full.name}/ivy-core-${build.version}.jar"/>

			<zipfileset dir="${build.dir}/lib" prefix="${snapshot.full.name}/lib"/>
		</zip>
		<tar destfile="${distrib.dir}/${snapshot.full.name}-bin-with-deps.tar.gz" 
			compression="gzip" longfile="gnu">
			<zipfileset src="${distrib.dir}/${snapshot.full.name}-bin-with-deps.zip"/>
		</tar>
	</target>

	<target name="snapshot-bin" 
			depends="snapshot-bin-with-dependencies, snapshot-bin-without-dependencies" />
	
	<target name="snapshot-jars" depends="init-snapshot, jar">
		<mkdir dir="${distrib.dir}"/>
		<copy file="${artifacts.build.dir}/jars/${final.name}" todir="${distrib.dir}" />
		<copy file="${artifacts.build.dir}/jars/${final.core.name}" todir="${distrib.dir}" />
	</target>
	
	<target name="snapshot-xsd" depends="init-snapshot">
		<mkdir dir="${distrib.dir}"/>
		<copy file="${src.dir}/org/apache/ivy/plugins/parser/xml/ivy.xsd" todir="${distrib.dir}" />
	</target>
	

	<target name="snapshot-maven2" depends="init-snapshot, snapshot-metadata, jar, sources, javadoc">
		<property name="m2.distrib.dir" value="${distrib.dir}/maven2/${build.version}" />
		<ivy:makepom ivyfile="${distrib.dir}/ivy.xml" 
	                 pomfile="${m2.distrib.dir}/ivy-${build.version}.pom"
                     headerfile="${basedir}/src/etc/license/license-header.xml">
			<mapping conf="core" scope="compile"/>
			<mapping conf="test" scope="test"/>
		</ivy:makepom>
		<copy file="${artifacts.build.dir}/jars/${final.name}" 
				tofile="${m2.distrib.dir}/ivy-${build.version}.jar" />
		<!-- jar javadocs -->
	    <jar destfile="${m2.distrib.dir}/ivy-${build.version}-javadoc.jar">
	        <fileset dir="${javadoc.build.dir}" />
	    </jar>
		<!-- copy sources jar -->
		<copy file="${artifacts.build.dir}/sources/${final.name}" 
				tofile="${m2.distrib.dir}/ivy-${build.version}-sources.jar" />
	</target>
	

	<target name="snapshot-checksums">
		<checksum algorithm="md5">
			<fileset dir="${distrib.dir}">
				<include name="*.pom"/>
				<include name="*.jar"/>
				<include name="*.zip"/>
				<include name="*.gz"/>
			</fileset>
		</checksum>
		<checksum algorithm="sha">
			<fileset dir="${distrib.dir}">
				<include name="*.pom"/>
				<include name="*.jar"/>
				<include name="*.zip"/>
				<include name="*.gz"/>
			</fileset>
		</checksum>
	</target>
	
	<target name="snapshot-version">
		<property name="version.prefix" value="${target.ivy.version}-dev-"/>
	</target>
	
	<target name="release-version">
		<input message="please enter version: " addproperty="build.version"/>
		<input message="please enter status: (integration,milestone,release)" addproperty="status"/>
	</target>
	
	<target name="prepare-snapshot" 
	        depends="/localivy, clean-ivy-home, clean, clean-lib, snapshot-version, install, clean-examples, coverage-report" />
	<target name="snapshot" 
			depends="prepare-snapshot, snapshot-src, snapshot-bin, snapshot-jars, snapshot-xsd, snapshot-maven2, snapshot-checksums" 
			description="used for nightly and integration builds"/>
	<target name="release" depends="release-version, snapshot" description="make a new release of Ivy"/>

	<!-- 
		publication on ivy web site
		requires to be logged in on people.apache.org 
	-->
	<available property="loggedin" file="/www/incubator.apache.org/ivy/index.html"/>
	<target name="publish-latest" if="loggedin" description="publishes the last snapshot done to ivy web site">
	   <property name="html.dir" value="/www/incubator.apache.org/ivy/downloads/latest/"/>
	   <delete>
	       <fileset dir="${html.dir}"/>
	   </delete>
	   <copy todir="${html.dir}">
	       <fileset dir="${distrib.dir}"/>
	   </copy>
	</target>

</project>
