<?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>
    
    <property name="ivy.jar.file"
	     value="/opt/apache-ivy-2.0.0/ivy-2.0.0.jar"/>

    <!-- ================================= 
          target: init
         ================================= -->
    <target name="init">
      <taskdef resource="org/apache/ivy/ant/antlib.xml"
		    uri="antlib:org.apache.ivy.ant"
		    classpath="${ivy.jar.file}"/>
      <ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />

	<taskdef name="sigil.bundle"
	  classname="org.apache.felix.sigil.ant.BundleTask"
	  classpath="${basedir}/../../../target/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>
