<?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="FlexPMD client build utility" default="default" xmlns:artifact="urn:maven-artifact-ant">

	<property environment="env" />
	<property file="${basedir}/build.properties" />

	<!-- uncomment if you need to see what properties ant is picking up 
	<echoproperties />
    -->
	
	<path id="maven-ant-tasks.classpath" path="${basedir}/ant.lib/maven-ant-tasks-2.0.9.jar" />
	<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" />


	<target name="default">
		<echo> This build contains at set of usefull targets </echo>
		<echo> The compilation, unit test, flexpmd quality report and done with maven </echo>
		<echo />
		<echo> From here, you may  the following target: </echo>
		<echo />
		<echo> -------- update the third party libraries swc  ----------------- </echo>
		<echo> libs.update          -- will clean and recopy the 3rd party swc in libs</echo>
		<echo />
		<echo> -------- flexcover --------------------------------------------- </echo>
		<echo> flexcover.run          -- will run the flexcover air client and flexunit test runner</echo>
		<echo> flexcover.report       -- will run flexcover and create a emma.xml report</echo>
	</target>

	<target name="libs.update">
		<delete includeemptydirs="true">
			<fileset dir="${basedir}/libs" includes="*.swc" excludes="radon_flex_remoted_objects*.swc" />
		</delete>
		<artifact:dependencies filesetId="dependency.fileset" useScope="test">
			<pom file="${basedir}/pom.xml" />
		</artifact:dependencies>
		<copy todir="${basedir}/libs">
			<fileset refid="dependency.fileset" />
			<!-- This mapper strips off all leading directory information -->
			<mapper type="flatten" />
		</copy>
		<delete includeemptydirs="true">
			<fileset dir="${basedir}/libs" includes="*${flex.sdk.version}*" defaultexcludes="false" excludes="datavisualization-3.2.0.3958-en_US.rb.swc,datavisualization-3.2.0.3958.swc"/>
			<fileset dir="${basedir}/libs" includes="*.pom" defaultexcludes="false" />
			<fileset dir="${basedir}/libs" includes="*.zip" defaultexcludes="false" />
            <fileset dir="${basedir}/libs" includes="*.jar" defaultexcludes="false" />
		</delete>
	</target>

	<target name="flexcover.run" depends="libs.update">
		<ant antfile="${basedir}/flexcover.xml" target="run" />
	</target>

	<target name="flexcover.report" depends="libs.update">
		<ant antfile="${basedir}/flexcover.xml" target="report" />
	</target>

</project>