<?xml version="1.0">
<!--
  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="dependee" default="run" xmlns:ivy="antlib:org.apache.ivy.ant">
    <!-- some variables used -->
    <property name="lib.dir" value="${basedir}/lib" />
    <property name="build.dir" value="${basedir}/build" />
    <property name="classes.dir" value="${build.dir}/classes" />
    <property name="src.dir" value="${basedir}/src" />

    <!-- ivy properties used -->
    <property name="ivy.settings.dir" value="../settings" />
    <property file="${ivy.settings.dir}/ivysettings.properties" />
    
    <!-- paths used for compilation and run  -->
    <path id="lib.path.id">
        <fileset dir="${lib.dir}" />
	</path>
    <path id="run.path.id">
        <path refid="lib.path.id" />
        <path location="${classes.dir}" />
    </path>
    
    <!-- ================================= 
          target: init
         ================================= -->
    <target name="init">
	<taskdef resource="org/apache/ivy/ant/antlib.xml"
		 uri="antlib:org.apache.ivy.ant"
		 classpath="${ivy.jar}"/>

	<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />

        <taskdef name="sigil.bundle"
          classname="org.cauldron.bld.ant.BundleTask"
          classpath="${sigil-ivy-plugin.jar}"/>
    </target>

    <!-- ================================= 
          target: resolve              
         ================================= -->
    <target name="resolve" depends="init"
    	description="--> resolve and retrieve dependencies with ivy">
        <ivy:retrieve />
    </target>
        
    <!-- ================================= 
          target: report              
         ================================= -->
    <target name="report" depends="resolve" description="--> generates a report of dependencies">
        <ivy:report todir="${build.dir}"/>
    </target>
	
    <!-- ================================= 
          target: compile              
         ================================= -->
    <target name="compile" depends="resolve" description="--> description">
        <mkdir dir="${classes.dir}" />
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="lib.path.id" />
    </target>
    
    <!-- ================================= 
          target: run
         ================================= -->
    <target name="run" depends="compile" description="--> compile and run the project">
        <java classpathref="run.path.id" classname="standalone.Main"/>
    </target>
    
    <!-- ================================= 
          target: jar              
         ================================= -->
    <target name="jar" depends="compile" description="--> make a jar file for this project">
        <propertyfile file="${classes.dir}/version.properties">
	        <entry  key="version" type="int" operation="+" default="0" />
		</propertyfile>
        <property file="${classes.dir}/version.properties" />
	<!--
        <jar destfile="${build.dir}/${ant.project.name}.jar">
            <fileset dir="${classes.dir}" />
        </jar>
	-->
	<sigil.bundle destpattern="${build.dir}/[id].[ext]"
		      classpathref="run.path.id" />
    </target>

    <!-- ================================= 
          target: publish              
         ================================= -->
    <target name="publish" depends="jar" description="--> publish this project in the ivy repository">
        <property name="revision" value="${version}"/>
        <delete file="${build.dir}/ivy.xml"/>
		<ivy:publish artifactspattern="${build.dir}/[artifact].[ext]" 
			resolver="projects"
			pubrevision="${revision}" 
			status="release"
		/>
        <echo message="project ${ant.project.name} released with version ${revision}" />
    </target>


    <!-- ================================= 
          target: clean              
         ================================= -->
    <target name="clean" description="--> clean the project">
        <delete includeemptydirs="true">
            <fileset dir="${basedir}">
            	<exclude name="src/**" />
            	<exclude name="build.xml" />
		<exclude name="ivy.xml" />
		<exclude name="sigil.properties" />
	    </fileset>
    	</delete>
    </target>
</project>
