radebatz.net

  • Home
  • CV
  • Mozilla
  • Java Chess
  • PGNParser
  • JWinboard
  • Contact
  • eurekster
  • toolbarmode
  • formhistory
  • commendare
  • build env.
    • build.xml
    • properties
  • GM scripts

build.xml

<project name="eurekster" default="xpi" basedir=".">

	<!-- build properties -->
	<property file="build.properties"/>
	<property file="../application.properties"/>

	<!-- used directories -->
	<property name="build.dir" value="build"/>


	<!-- update test profile -->
	<target name="copyjar" depends="jar" if="copyjar.dir" description="Copy new jar file into Firefox chrome folder.">
		<copy todir="${copyjar.dir}" overwrite="true" file="${build.dir}/chrome/${chrome.jar.filename}"/>
	</target>


	<!-- init -->
	<target name="init" description="Initialize project.">
		<tstamp/>
	</target>


	<!-- clean -->
	<target name="clean" description="Clean up created files.">
		<delete dir="${build.dir}" />
		<delete file="${chrome.xpi.filename}" />
	</target>


	<!-- ask for target browser if not set -->
	<target name="ask-browser" unless="browser.name" description="Ask for target browser.">
	  <input addproperty="browser.name" message="Enter the target browser " validargs="mozilla,firefox" defaultvalue="firefox"/> 
	</target>


	<!-- prepare build -->
	<target name="prepare-build" depends="init,ask-browser" description="Prepare files.">
		<property name="chrome.xpi.filename" value="${chrome.ident}-${browser.name}-${extension.version}.xpi" />
		<mkdir dir="${build.dir}"/>
		<copy todir="${build.dir}">
			<fileset dir="${basedir}">
				<include name="content/**"/>
				<include name="locale/**"/>
				<include name="skin/**"/>
				<include name="defaults/**"/>
			</fileset>
		</copy>
		<copy todir="${build.dir}">
			<fileset dir="${basedir}/config/"/>
		</copy>
	</target>


	<!-- do all the messing around with the code -->
	<target name="patch" depends="prepare-build" description="Patch files for specified browser.">
		<antcall target="strip-debug">
			<param name="patch.dir" value="${build.dir}"/>
		</antcall>

		<!-- target dependent code -->
		<condition property="target.is.mozilla">
			<equals arg1="${browser.name}" arg2="mozilla"/>
		</condition>
		<condition property="target.is.firefox">
			<equals arg1="${browser.name}" arg2="firefox"/>
		</condition>

		<antcall target="patch-mozilla"/>
		<antcall target="patch-firefox"/>
	</target>

	<!-- mozila specific patching -->
	<target name="patch-mozilla" depends="prepare-build" if="target.is.mozilla" description="Patching for Mozilla.">
		<echo message="Patching for Mozilla"/>
		<antcall target="preproccess">
			<param name="patch.dir" value="${build.dir}"/>
			<param name="enable.pattern" value="mozilla"/>
			<param name="disable.pattern" value="firefox"/>
		</antcall>

		<property name="browser.id" value="${browser.mz.id}"/>
		<property name="browser.minVersion" value="${browser.mz.minVersion}"/>
		<property name="browser.maxVersion" value="${browser.mz.maxVersion}"/>
		<property name="browser.chromename" value="${browser.mz.chromename}"/>
		<antcall target="version">
			<param name="patch.dir" value="${build.dir}"/>
		</antcall>
	</target>


	<!-- firefox specific patching -->
	<target name="patch-firefox" depends="prepare-build" if="target.is.firefox" description="Patching for firefox.">
		<echo message="Patching for firefox"/>
		<antcall target="preproccess">
			<param name="patch.dir" value="${build.dir}"/>
			<param name="enable.pattern" value="firefox"/>
			<param name="disable.pattern" value="mozilla"/>
		</antcall>

		<property name="browser.id" value="${browser.fx.id}"/>
		<property name="browser.minVersion" value="${browser.fx.minVersion}"/>
		<property name="browser.maxVersion" value="${browser.fx.maxVersion}"/>
		<property name="browser.chromename" value="${browser.fx.chromename}"/>
		<antcall target="version">
			<param name="patch.dir" value="${build.dir}"/>
		</antcall>
	</target>


	<!-- version all source files -->
	<target name="version" description="Ant property style substitutions.">
		<echo message="Versioning ${patch.dir}/** ..."/>
		<!-- '$$': escape Ant property expansion, '\': escape regexp '$' handling, '\}' required for JDK regexp implementation -->
		<replaceregexp match="\$$\{extension.id\}" replace="${extension.id}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{extension.version\}" replace="${extension.version}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{extension.author\}" replace="${extension.author}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{extension.name\}" replace="${extension.name}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{extension.description\}" replace="${extension.description}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{extension.homepage\}" replace="${extension.homepage}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>

		<replaceregexp match="\$$\{browser.id\}" replace="${browser.id}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{browser.minVersion\}" replace="${browser.minVersion}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{browser.maxVersion\}" replace="${browser.maxVersion}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{browser.chromename\}" replace="${browser.chromename}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{chrome.ident\}" replace="${chrome.ident}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\$$\{chrome.jar.filename\}" replace="${chrome.jar.filename}" flags="g"><fileset dir="${patch.dir}"/></replaceregexp>
	</target>


	<!-- preproccessor for conditional code -->
	<target name="preproccess" description="Simple regexp based preproccessor.">
		<echo message="Preproccess ${patch.dir}/** ..."/>
		<!-- enable -->
		<replaceregexp match="&lt;#${enable.pattern}([^\#]*)#&gt;" replace="\1" flags="gs"><fileset dir="${patch.dir}"/></replaceregexp>
		<!-- disable -->
		<replaceregexp match="(&lt;#${disable.pattern}[^\#]*#&gt;)" replace="" flags="gs"><fileset dir="${patch.dir}"/></replaceregexp>
	</target>


	<!-- strip debug code -->
	<target name="strip-debug" if="nodebug" description="Remove debug code.">
		<echo message="Remove debug code ${patch.dir}/** ..."/>
		<!-- function calls -->
		<replaceregexp match="\s+eurekster_dump\([^)]*\);\n?" replace="" flags="gm"><fileset dir="${patch.dir}"/></replaceregexp>
		<replaceregexp match="\s+eurekster_trace\([^)]*\);\n?" replace="" flags="gm"><fileset dir="${patch.dir}"/></replaceregexp>
	</target>


	<!-- use new chrome.manifest -->
	<target name="enable-manifest" if="manifest" description="Use new chrome.manifest.">
		<echo message="Setup chrome.manifest ..."/>
		<replaceregexp match="&lt;em:file.*em:file&gt;" replace="" flags="gs" file="${build.dir}/install.rdf"/>
		<delete>
			<fileset dir="${build.dir}" includes="**/contents.rdf"/>
		</delete>
	</target>


	<!-- build extension jar -->
	<target name="jar" depends="prepare-build,patch,enable-manifest" description="Build extension .jar file.">
		<mkdir dir="${build.dir}/chrome/"/>
		<zip zipfile="${build.dir}/chrome/${chrome.jar.filename}">
			<zipfileset dir="${build.dir}">
				<include name="content/**"/>
				<include name="locale/**"/>
				<include name="skin/**"/>
			</zipfileset>
		</zip>
	</target>


	<!-- build xip -->
	<target name="xpi" depends="clean,jar" description="Build extension .xpi file.">
		<mkdir dir="dist"/>
		<zip zipfile="dist/${chrome.xpi.filename}">
			<zipfileset dir="${build.dir}" includes="chrome/${chrome.jar.filename}"/>
			<zipfileset dir="${build.dir}" includes="install*"/>
			<zipfileset dir="${build.dir}" includes="defaults/**"/>
		</zip>
	</target>

</project>
© 2001-2005 radebatz.net