<project name="compile-ant-tasks" default="compile">

  

        <!-- This file originally required the user to specify where to
             find a version 'crypt.jar' on the command-line through a '-D'
             argument.  To simplify things, the 'lib' folder has now been
             added, and a version of 'crypt.jar' stored there.  So now we
             can set the property directly in this build.xml.  

	     Leaving the more complicated testing targets in for now in case
	     it turns out there is a good reason why it was done this way in
	     the first place 
	  -->

        <property name="crypt.jar" value="lib/crypt.jar"/> 

	<condition property="libs.set">
		<and>
			<isset property="crypt.jar"/>
		</and>
	</condition>

	<target name="compile" depends="check-libs">	  
	  <mkdir dir="classes"/>
	  <javac includeantruntime="true"
		 srcdir="src/org/greenstone/anttasks"
		 destdir="classes"
		 classpath="${crypt.jar}">
	    <compilerarg line="${compile.javac.flags}"/>
	  </javac>
	  
	  <jar destfile="anttasks.jar" basedir="classes"/>
	</target>

	<target name="clean">
		<delete dir="classes"/>
		<delete file="anttasks.jar"/>
	</target>

	<target name="check-libs" unless="libs.set">
		<echo>Please set crypt.jar property to the path of the crypt.jar file</echo>
		<echo>E.g., ant -Dcrypt.jar=/path/to/crypt.jar</echo>
		<fail>paths to libs not set</fail>
	</target>

	<target name="test-setup">
		<path id="test.classpath">
			<pathelement path="anttasks.jar"/>
			<pathelement path="${crypt.jar}"/>
		</path>
		<typedef name="dcff" classname="org.greenstone.anttasks.DeleteChunkFromFile" classpathref="test.classpath"/>
		<typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="test.classpath"/>
		<typedef name="gpv" classname="org.greenstone.anttasks.GetPropertyValue" classpathref="test.classpath"/>
		<mkdir dir="test"/>
	</target>

	<target name="test" depends="test-setup">
		<antcall target="test-rsr"/>
		<antcall target="test-dcff"/>
		<antcall target="test-gpv"/>
	</target>

	<target name="test-rsr" depends="test-setup">

		<!-- test 1 -->
		<copy file="src/test/rsr.txt" tofile="test/rsr1.txt"/>
		<rsr file="test/rsr1.txt" pattern="things" replacement="strings"/>

		<!-- test 2 -->
		<copy file="src/test/rsr.txt" tofile="test/rsr2.txt"/>
		<rsr file="test/rsr2.txt">
			<job pattern="things" replacement="objects"/>
			<job pattern="Or" replacement="And"/>
		</rsr>

		<!-- test 3 -->
		<copy file="src/test/rsr.txt" tofile="test/rsr3.txt"/>
		<rsr file="test/rsr3.txt" pattern="@path@" replacement="C:\Program Files\Greenstone 2.80"/>
		<rsr file="test/rsr3.txt" pattern="@path-with-winpath@" replacement="C:\Program Files\Greenstone 2.80" winPath="true"/>

		<!-- test 4 -->
		<copy file="src/test/rsr.txt" tofile="test/rsr4.txt"/>
		<rsr file="test/rsr4.txt">
			<job pattern="@path@" replacement="C:\Program Files\Greenstone 2.80"/>
			<job pattern="@path-with-winpath@" replacement="C:\Program Files\Greenstone 2.80" winPath="true"/>
		</rsr>

		<!-- test 5 -->
		<copy file="src/test/rsr.txt" tofile="test/rsr5-1.txt"/>
		<copy file="src/test/rsr.txt" tofile="test/rsr5-2.txt"/>
		<rsr>
			<fileset dir="test" includes="rsr5-*"/>
			<job pattern="@path@" replacement="C:\Program Files\Greenstone 2.80"/>
			<job pattern="@path-with-winpath@" replacement="C:\Program Files\Greenstone 2.80" winPath="true"/>
		</rsr>

		<!-- test 6 -->
		<copy file="src/test/rsr.txt" tofile="test/rsr6-1.txt"/>
		<copy file="src/test/rsr.txt" tofile="test/rsr6-2.txt"/>
		<copy file="src/test/rsr.txt" tofile="test/rsr6-3.txt"/>
		<copy file="src/test/rsr.txt" tofile="test/rsr6-4.txt"/>
		<rsr file="test/rsr6-1.txt" pattern="e" replacement="*" lines="8"/>
		<rsr file="test/rsr6-2.txt" pattern="e" replacement="*" lines="4-9"/>
		<rsr file="test/rsr6-3.txt" pattern="e" replacement="*" lines="-8"/>
		<rsr file="test/rsr6-4.txt" pattern="e" replacement="*" lines="4-"/>

	</target>

	<target name="test-dcff" depends="test-setup">

		<!-- test 1 -->
		<copy file="src/test/dcff.txt" tofile="test/dcff1.txt"/>
		<dcff file="test/dcff1.txt" startTag="The" endTag="brown" leaveTags="true"/>

		<!-- test 2 -->
		<copy file="src/test/dcff.txt" tofile="test/dcff2.txt"/>
		<dcff file="test/dcff2.txt" startTag="quick" endTag="brown"/>

		<!-- test 3 -->
		<copy file="src/test/dcff.txt" tofile="test/dcff3.txt"/>
		<dcff file="test/dcff3.txt" startTag="fox" leaveTags="true"/>

		<!-- test 4 -->
		<copy file="src/test/dcff.txt" tofile="test/dcff4.txt"/>
		<dcff file="test/dcff4.txt" startTag="&lt;!--start--&gt;" endTag="&lt;!--end--&gt;"/>

		<!-- test 5 -->
		<copy file="src/test/dcff.txt" tofile="test/dcff5.txt"/>
		<dcff file="test/dcff5.txt" startTag="&lt;!--\s*if\s*(?!.*linux)[^ ]+\s*--&gt;" endTag="&lt;!--\s*/if\s*--&gt;" />


		</target>

	<target name="test-gpv" depends="test-setup">

		<!-- test 1 -->
		<gpv propertiesFile="src/test/gpv.txt"  propertyName="startmenu.path" outputProperty="gpv.startmenu.path"/>
		<echo>startmenu.path =  '${gpv.startmenu.path}'</echo>

		<gpv propertiesFile="src/test/gpv.txt"  propertyName="my.second.property" outputProperty="gpv.my.second.property"/>
		<echo>my.second.property = '${gpv.my.second.property}'</echo>


	</target>

	<target name="test-win-sevenzip" depends="test-setup">

		<!-- test 1 -->
		<copy file="src/test/sevenzip.lzma" tofile="test/sevenzip1.lzma"/>
		<sevenzip task="decode" input="test/sevenzip1.lzma" output="test/sevenzip1.comp"/>

	</target>

	<target name="test-clean">
		<delete dir="test"/>
	</target>

</project>
