<!-- 

	For use in development of the External tools plugin 
	This script can be used to update a target for testing/debugging
	Export a jar of .class files for the org.eclipse.ant.core Eclipse plugin
    along with other important plugin files to the "plugin-export" subdirectory
    of the target Eclipse installation
	As well the export of the plugin is copied to a target installation.
 -->
<project name="Update target" default="export" basedir="..">

	<!-- Set the timestamp and important properties -->
	<target name="init">
		<tstamp/>
		<property name="bootclasspath" value=""/>
		<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
		<property name="destdir" value="../../plugin-export" />
		<property name="pluginName" value= "org.eclipse.ui.externaltools_2.1.0"/>
		<property name="destBin"  value="${destdir}/${pluginName}" />
		<property name="destSrc"  value="${destdir}/org.eclipse.platform.source/src/org.eclipse.ui.externaltools_2.1.0" />
		<property name="temp.folder" value="${destdir}/temp.folder"/>
		<property name="swt.jar" value="${basedir}/../org.eclipse.swt.win32/ws/win32/swt.jar"/>

		<property name="currentBuild" value="../../Debugger/Ant/eclipse"/>
		<property name="currentBuildPlugins" value="${currentBuild}/plugins/${pluginName}"/>
	</target>

	<!-- Create the jar of .class files, and copy other important files to export dir -->
	<target name="export" depends="init">
		<mkdir dir="${destdir}" />
		<delete dir="${destBin}" />
		<mkdir dir="${destBin}" />
		<delete dir="${destSrc}" />
		<mkdir dir="${destSrc}" />
		<delete dir="${destBin}/lib" />
		<jar 
			jarfile="${destBin}/externaltools.jar"
			basedir="bin"
			excludes="bin/org/eclipse/ui/externaltools/internal/ui/ant"
		/>
		<!-- Create the source zip -->
		<zip zipfile="${destSrc}/externaltoolssrc.zip">
			<fileset dir="External Tools Base"/>
			<fileset dir="Program Tools Support"/>
			<fileset dir="Ant Tools Support"/>
		</zip>
		<copy file="plugin.xml" todir="${destBin}"/>
		<copy file="plugin.properties" todir="${destBin}"/>
		<copy file="about.html" todir="${destBin}"/>
		<copy file=".classpath" todir="${destBin}"/>
		<copy file=".options" todir="${destBin}"/>
		<copy todir="${destBin}/icons">
			<fileset dir="icons" />
		</copy>	
		
		<delete dir="${temp.folder}/lib/antrunner.jar.bin"/>
		<mkdir dir="${temp.folder}/lib/antrunner.jar.bin"/>
		<!-- compile the source code -->
		<javac target="1.3" source="1.3" destdir="${temp.folder}/lib/antrunner.jar.bin" failonerror="false" verbose="false" debug="on" includeAntRuntime="no" bootclasspath="${bootclasspath}" classpath="${basedir}/../org.eclipse.core.runtime/runtime.jar;${basedir}/../org.apache.ant/ant.jar;${basedir}/../org.apache.xerces/xercesImpl.jar;${basedir}/../org.apache.xerces/xmlParserAPIs.jar;${basedir}/bin;${basedir}/../org.eclipse.core.boot/boot.jar;${swt.jar};${basedir}/../org.eclipse.ant.core/bin">
			<src path="Ant Runner Support/"/>
		</javac>
		<!-- copy any necessary resources -->
		<copy todir="${temp.folder}/lib/antrunner.jar.bin">
			<fileset dir="Ant Runner Support/" excludes="**/*.java"/>
		</copy>
		<mkdir dir="${destBin}/lib"/>
		<jar jarfile="${destBin}/lib/antrunner.jar" basedir="${temp.folder}/lib/antrunner.jar.bin"/>
		<delete dir="${temp.folder}"/>
		
	</target>
	
	<target name="copy" depends="init">
		<delete dir="${currentBuildPlugins}/${pluginName}" />
		<copy todir="${currentBuildPlugins}">
			<fileset dir="${destBin}"/>
		</copy>
	</target>
</project>
