<!-- Export a jar of .class files for the org.eclipse.ui.externaltools Eclipse plug-in
     along with other important plugin files to the "plugin-export" subdirectory
     of the target Eclipse installation -->
<project name="Export externaltools" default="export" basedir="..">

	<!-- Set the timestamp and important properties -->
	<target name="init">
		<tstamp/>
		<property name="destdir" value="../../plugin-export" />
		<property name="dest"  value="${destdir}/org.eclipse.ui.externaltools_2.1.0" />
	</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="${dest}" />
		<mkdir dir="${dest}" />
		<delete dir="${dest}/lib"/>
		<mkdir dir="${dest}/lib"/>
		<jar jarfile="${dest}/externaltools.jar">
			<fileset dir="bin">
				<exclude name="org/eclipse/ui/externaltools/internal/ant/inputhandler/*"/>
				<exclude name="org/eclipse/ui/externaltools/internal/ant/logger/*"/>
			</fileset>
		</jar>
		<!-- Create the source zip -->
		<zip zipfile="${dest}/externaltoolssrc.zip">
			<fileset dir="Ant Runner Support"/>
			<fileset dir="Ant Tools Support"/>
			<fileset dir="External Tools Base"/>
			<fileset dir="Program Tools Support"/>
			<fileset dir="Ant Editor"/>
		</zip>
		<copy file="plugin.xml" todir="${dest}"/>
		<copy file="plugin.properties" todir="${dest}"/>
		<copy file=".classpath" todir="${dest}"/>
		<copy file=".options" todir="${dest}"/>
		<copy file="lib/antrunner.jar" todir="${dest}/lib"/>
		<copy todir="${dest}/icons">
			<fileset dir="icons" />
		</copy>		
	</target>
	
</project>
