<?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="sigil" default="dist" 
  xmlns:ivy="antlib:org.apache.ivy.ant"
  xmlns:groovy="antlib:org.codehaus.groovy">

  <import file="bldcommon/common.xml"/>

  <fileset id="my.projects" dir="${basedir}">
    <exclude name="ivy/resolver/test/**/${build_xml}"/>
    <exclude name="ivy/resolver/example/**/${build_xml}"/>
    <exclude name="bldcommon/**/${build_xml}" />
    <include name="**/${build_xml}"/>
  </fileset>

  <target name="init">
    <subant buildpath="bldcommon/prepare" target="resolve" />
  </target>

  <target name="dist" depends="build, site" />

  <target name="clean" depends="clean-list, clean-site, clean-tmp" />

  <target name="build" depends="init, build-list" />

  <target name="report" depends="report-list" />

  <target name="site" depends="bldcommon.init">
    <!-- eclipse features -->
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.core.feature" revision="latest.integration" inline="true" pattern="${site.dir}/features/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.obr.feature" revision="latest.integration" inline="true" pattern="${site.dir}/features/[artifact]_${buildVersion}.[ext]" transitive="false"/>

    <!-- eclipse plugins -->
    <ivy:retrieve organisation="org.apache" module="felix.sigil.common.core" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.common.junit" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.common.obr" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.common.osgi" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.common.runtime" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.core" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.help" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.obr" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.runtime" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.search" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.ui" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.utils" revision="latest.integration" inline="true" pattern="${site.dir}/plugins/[artifact]_${buildVersion}.[ext]" transitive="false"/>
    <ivy:retrieve organisation="sigil" module="com.springsource.org.apache.commons.lang" revision="2.4.0" inline="true" pattern="${site.dir}/plugins/[artifact]_[revision].[ext]" transitive="false"/>

    <!-- ivy -->
    <ivy:retrieve organisation="org.apache" module="felix.sigil.ivy.resolver" revision="latest.integration" inline="true" pattern="${site.dir}/ivy/[artifact].[ext]" transitive="false"/>

    <!-- gogo -->
    <ivy:retrieve organisation="org.apache" module="felix.sigil.gogo.junit" revision="latest.integration" inline="true" pattern="${site.dir}/gogo/[artifact].[ext]" transitive="false"/>

    <groovy:groovy src="bldcommon/updatesite.groovy">
      <arg value="${site.dir}/features"/>
      <arg value="${site.dir}/site.xml" />
    </groovy:groovy>
  </target>

  <target name="clean-site">
    <delete dir="${site.dir}" />
  </target>

  <target name="clean-tmp">
    <echo>${cache.dir}</echo>
    <delete includeemptydirs="true">
     <fileset dir="${cache.dir}" includes="all/org.apache-felix.sigil*"/>
     <fileset dir="${cache.dir}" includes="all/org.apache/felix.sigil*/**"/>
     <fileset dir="${cache.dir}" includes="all/resolved-org.apache-felix.sigil*"/>
    </delete>
    <delete includeemptydirs="true">
     <dirset dir="${cache.dir}">
       <include name="all/org.apache/felix.sigil*"/>
     </dirset>
    </delete>
  </target>
</project>
