<?xml version="1.0"?>

<project xmlns:antcontrib="antlib:net.sf.antcontrib" xmlns:artifact="antlib:org.apache.maven.artifact.ant" xmlns:ivy="antlib:org.apache.ivy.ant" name="common" basedir="../" default="init-deps">

    <property name="ivy.install.version" value="2.2.0" />
    <property name="ivy.jar.name" value="ivy-${ivy.install.version}.jar" />
    <property name="ivy.jar.dir" value="${user.home}/.ant/lib" />
    <property name="ivy.jar.file" value="${ivy.jar.dir}/${ivy.jar.name}" />

    <target name="init-deps" description="Configure Ivy dependency management and load common task definitions" depends="init-taskdefs" unless="deps.initialized">
        <property name="deps.initialized" value="1" />
    </target>

    <target name="check-ivy-installed">
        <available property="ivy.installed" file="${ivy.jar.file}" />
        <available property="ivy.installed" classname="org.apache.ivy.ant.IvyConfigure" />
        <antcall target="common.ivy-download" />
    </target>

    <target name="ivy-download" unless="ivy.installed">
        <mkdir dir="${ivy.jar.dir}" />
        <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true" />
    </target>

    <target name="ivy-configure" depends="check-ivy-installed" unless="deps.initialized">
        <!-- Ivy task definitions -->
        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar.file}" />
        <!-- Ivy settings -->
        <property name="ivy.settings.file" value="${project.root}/build/ivy/ivysettings.xml" />
        <ivy:configure />
    </target>

    <target name="init-taskdefs" depends="ivy-configure" unless="deps.initialized">
        <echo>Loading Ant tasks</echo>
        <ivy:resolve log="download-only" file="${project.root}/build/ivy/ivy.xml" conf="taskdefs" />
        <ivy:cachepath pathid="taskdefs.classpath" conf="taskdefs" />
        <taskdef resource="emma_ant.properties" classpathref="taskdefs.classpath" />

        <!-- ant contrib required for flow control (for loop, if, property 
            override) -->
        <!-- Note that we have to use a namespace to avoid clash when running 
            sub-ant. -->
        <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" classpathref="taskdefs.classpath" />

        <!-- ant contrib for Maven integration -->
        <taskdef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpathref="taskdefs.classpath" />

        <!-- jarjar -->
        <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpathref="taskdefs.classpath" />

    </target>

</project>
