<?xml version="1.0" encoding="iso-8859-1"?>

<!--
	jQuery UI Contrib Release!

	Call task called 'deploy-release' to build a full release.
	The release built will be stored on 'dist' dir.

-->

<project name="jquery-ui" default="deploy-release" basedir=".">
	
	<taskdef resource="net/sf/antcontrib/antcontrib.properties">
		<classpath>
			<pathelement location="build/ant-contrib-0.6.jar"/>
		</classpath>
	</taskdef>
	
	<property file="ant.properties" />

	<loadfile failonerror="no" srcFile="../version.txt" property="release.version" />
	<property name="release.filename" value="jqueryui-contrib-${release.version}" />

	<property name="dist.dir" value="dist/${release.filename}/" />
	<property name="build.dir" value="build" />
	<property name="ui.dir" value="../" />
	<property name="src.dir" value="${ui.dir}/ui/" />
	<property name="theme.dir" value="${ui.dir}/themes/base/" />

	<property name="min.folder" value="${dist.dir}/ui/minified" />

	<property name="concatenated" value="jqueryui-contrib" />

	<property name="core.files" value="ui.contrib.js" />

	<property description="YUI Compressor" name="yui-jar" value="${build.dir}/yuicompressor-2.4.2.jar" />
	
	<target name="deploy-release" depends="concatenate, minify, copy, replace-version, prepend-header, zip" description="Release builder">
	</target>

	<target name="replace-version">
		<replaceregexp match="@VERSION" replace="${release.version}" flags="g" byline="true">
		    <fileset dir="${dist.dir}/ui/" includes="*.js"/>
			<fileset dir="${dist.dir}/ui/minified/" includes="*.js"/>
		</replaceregexp>
		<echo message="Replaced all @VERSION to ${release.version}." />
	</target>
	
	<target name="prepend-header">
		<!-- TODO: refactor this ugly mess -->
		<copy todir="${dist.dir}/headers/">
			<fileset dir="${dist.dir}/ui/" includes="*.js" />
		</copy>
		<replaceregexp match="^(\/\*.*?\*\/\s).+" replace="\1" flags="s">
		    <fileset dir="${dist.dir}/headers/" includes="*.js"/>
		</replaceregexp>
		<for param="file">
			<path><fileset dir="${dist.dir}/ui/minified/" includes="*.js" /></path>
			<sequential>
				<propertyregex override="yes" property="target" input="@{file}" regexp=".+/(.+)\.min\.js$" replace="\1"/>
				<concat destfile="${dist.dir}/ui-headered/${target}.min.js">
					<header file="${dist.dir}/headers/${target}.js" />
					<fileset file="@{file}" />
				</concat>
			</sequential>
		</for>
		<copy todir="${dist.dir}/ui/minified" overwrite="true">
			<fileset dir="${dist.dir}/ui-headered/" />
		</copy>
		<delete dir="${dist.dir}/headers/" />
		<delete dir="${dist.dir}/ui-headered/" />
	</target>

	<target description="Zip the package" name="zip">
		<zip destfile="${dist.dir}/../${release.filename}.zip">
			<zipfileset dir="dist/" />
		</zip>
	</target>

	<target name="concatenate">
		<echo message="Building concatenated" />
		<mkdir dir="${dist.dir}/ui/" />
		<delete file="${dist.dir}/ui/${concatenated}.js" />

		<concat destfile="${dist.dir}/ui/${concatenated}.js">
			<filelist dir="${src.dir}/" files="${core.files}" />
			<fileset dir="${src.dir}/" includes="ui.*.js, effects.*.js" excludes="${core.files}" />
		</concat>
		<echo message="Concatenated built." />

		<concat destfile="${dist.dir}/themes/base/${concatenated}.css">
			<fileset dir="${theme.dir}/" includes="ui.*.css" excludes="ui.all.css, ui.core.css, ui.base.cs, ui.theme.css" />
		</concat>
		<echo message="Concatenated theme." />
	</target>

	<target name="minify" depends="concatenate" description="Remove all comments and whitespace, no compression, great in combination with GZip">
		<echo message="Building minified" />
		<delete dir="${min.folder}/" />
		<mkdir dir="${min.folder}" />

		<apply executable="java" parallel="false">
			<filelist dir="${dist.dir}/ui/" files="${concatenated}.js" />
			<fileset dir="${src.dir}/" includes="ui.*.js, effects.*.js" />
			<arg line="-jar" />
			<arg path="${yui-jar}" />
			<arg value="--charset" />  
			<arg value="UTF-8" />  
			<srcfile />
			<arg line="-o" />
			<mapper type="glob" from="*.js" to="${min.folder}/*.min.js" />
			<targetfile />
		</apply>
		<echo message="Minified built." />
	</target>

	<target description="Copy needed folders" name="copy">
		<echo message="Copying files" />
		<mkdir dir="${dist.dir}" />

		<copy overwrite="true" todir="${dist.dir}/">
			<fileset dir="${ui.dir}/" includes="jquery-*.js" />
		</copy>

		<copy overwrite="true" todir="${dist.dir}/ui/">
			<fileset dir="${src.dir}/" includes="ui.*.js, effects.*.js" />
		</copy>

		<copy overwrite="true" todir="${dist.dir}/">
			<fileset dir="${ui.dir}/" includes="*.txt" />
		</copy>

		<copy overwrite="true" todir="${dist.dir}/demos/" >
			<fileset dir="${ui.dir}/demos/" />
		</copy>

		<copy overwrite="true" todir="${dist.dir}/themes/" >
			<fileset dir="${ui.dir}/themes/" />
		</copy>
		<echo message="Files copied." />
	</target>
	
	 <target name="clean">
	 	<delete dir="dist" />
    </target>
	
	<target name="whitespace">
		<replaceregexp match="[\t ]+$" replace="" flags="g" byline="true">
		    <fileset dir="${src.dir}" includes="*.js"/>
		</replaceregexp>
		<echo message="All trailing spaces removed." />
	</target>

</project>

