-->
<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="docs.dir" value="${dist.dir}/docs/" />
<property name="min.dir" value="${dist.dir}/ui/minified" />
+ <property name="size.dir" value="size" />
<property name="concatenated" value="jquery-ui" />
<property name="concatenated.i18n" value="jquery-ui-i18n" />
<property description="Google Closure" name="closure-jar" value="${build.dir}/google-compiler-20091218.jar" />
<property description="YUI Compressor" name="yuicompressor-jar" value="${build.dir}/yuicompressor-2.4.2.jar" />
-
+
<target name="deploy-release" depends="clean, docs-download, copy, minify, 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/" includes="*.js"/>
<fileset dir="${dist.dir}/ui/minified/" includes="*.js"/>
<fileset dir="${dist.dir}/themes/" includes="**/*.css"/>
</replaceregexp>
<echo message="Replaced all @VERSION to ${release.version}." />
</target>
-
+
<target name="prepend-header">
<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"/>
+ <fileset dir="${dist.dir}/headers/" includes="*.js"/>
</replaceregexp>
<for param="file">
<path><fileset dir="${min.dir}/" includes="*.js" /></path>
<copy todir="${min.dir}" overwrite="true">
<fileset dir="${dist.dir}/ui-headered/" includes="*.js" />
</copy>
-
+
<copy todir="${dist.dir}/headers/">
<fileset dir="${dist.dir}/themes/base" includes="*.css" />
</copy>
<replaceregexp match="^(\/\*.*?\*\/\s).+" replace="\1" flags="s">
- <fileset dir="${dist.dir}/headers/" includes="*.css"/>
+ <fileset dir="${dist.dir}/headers/" includes="*.css"/>
</replaceregexp>
<for param="file">
<path><fileset dir="${dist.dir}/themes/base/minified" includes="*.css" /></path>
<copy todir="${dist.dir}/themes/base/minified" overwrite="true">
<fileset dir="${dist.dir}/ui-headered/" includes="*.css" />
</copy>
-
+
<!-- once more for the i18n files -->
<!-- need to clean up headers in those files first
<copy todir="${dist.dir}/headers/i18n/">
<fileset dir="${dist.dir}/ui/i18n/" includes="*.js" />
</copy>
<replaceregexp match="^(\/\*.*?\*\/\s).+" replace="\1" flags="s">
- <fileset dir="${dist.dir}/headers/i18n/" includes="*.js"/>
+ <fileset dir="${dist.dir}/headers/i18n/" includes="*.js"/>
</replaceregexp>
<for param="file">
<path><fileset dir="${min.dir}/i18n/" includes="*.js" /></path>
<mkdir dir="${min.dir}" />
<mkdir dir="${min.dir}/i18n/" />
<mkdir dir="${dist.dir}/themes/base/minified" />
-
- <apply executable="java" parallel="false">
- <fileset dir="${dist.dir}/ui" includes="*.js" />
- <arg line="-jar" />
- <arg path="${closure-jar}" />
- <arg value="--warning_level" />
- <arg value="QUIET" />
- <arg value="--js_output_file" />
- <targetfile />
- <arg value="--js" />
- <mapper type="glob" from="*.js" to="${min.dir}/*.min.js" />
- </apply>
-
- <apply executable="java" parallel="false">
- <fileset dir="${dist.dir}/ui/i18n" includes="*.js" />
- <arg line="-jar" />
- <arg path="${closure-jar}" />
- <arg value="--warning_level" />
- <arg value="QUIET" />
- <arg value="--js_output_file" />
- <targetfile />
- <arg value="--js" />
- <mapper type="glob" from="*.js" to="${min.dir}/i18n/*.min.js" />
- </apply>
-
- <apply executable="java" parallel="false">
- <fileset dir="${dist.dir}/themes/base" includes="*.css" />
- <arg line="-jar" />
- <arg path="${yuicompressor-jar}" />
- <arg line="--charset utf-8" />
- <arg line="-v" />
- <srcfile />
- <arg line="-o" />
- <mapper type="glob" from="*.css" to="${dist.dir}/themes/base/minified/*.min.css" />
- <targetfile/>
- </apply>
-
+
+ <parallel threadsperprocessor="1">
+
+ <apply executable="java" parallel="false">
+ <fileset dir="${dist.dir}/ui" includes="*.js" />
+ <arg line="-jar" />
+ <arg path="${closure-jar}" />
+ <arg value="--warning_level" />
+ <arg value="QUIET" />
+ <arg value="--js_output_file" />
+ <targetfile />
+ <arg value="--js" />
+ <mapper type="glob" from="*.js" to="${min.dir}/*.min.js" />
+ </apply>
+
+ <apply executable="java" parallel="false">
+ <fileset dir="${dist.dir}/ui/i18n" includes="*.js" />
+ <arg line="-jar" />
+ <arg path="${closure-jar}" />
+ <arg value="--warning_level" />
+ <arg value="QUIET" />
+ <arg value="--js_output_file" />
+ <targetfile />
+ <arg value="--js" />
+ <mapper type="glob" from="*.js" to="${min.dir}/i18n/*.min.js" />
+ </apply>
+
+ <apply executable="java" parallel="false">
+ <fileset dir="${dist.dir}/themes/base" includes="*.css" />
+ <arg line="-jar" />
+ <arg path="${yuicompressor-jar}" />
+ <arg line="--charset utf-8" />
+ <arg line="-v" />
+ <srcfile />
+ <arg line="-o" />
+ <mapper type="glob" from="*.css" to="${dist.dir}/themes/base/minified/*.min.css" />
+ <targetfile/>
+ </apply>
+
+ </parallel>
+
<replaceregexp match=".css" replace=".min.css" flags="g">
<fileset dir="${dist.dir}/themes/base/minified/">
<include name="*.base.min.css"/>
<include name="*.all.min.css"/>
</fileset>
</replaceregexp>
-
+
<!-- make a copy of all theme images to ensure that relative paths in minified css files work -->
<copy todir="${dist.dir}/themes/base/minified/images" >
<fileset dir="${ui.dir}/themes/base/images" />
</copy>
-
+
<echo message="Minified ui/ built." />
</target>
-
+
<target description="Copy needed folders" name="copy">
<echo message="Copying files" />
<mkdir dir="${dist.dir}" />
</copy>
<echo message="Files copied." />
</target>
-
+
<target name="clean">
- <delete dir="dist" />
- </target>
-
+ <delete dir="dist" />
+ </target>
+
<target name="docs-download">
<mkdir dir="${docs.dir}" />
<property name="url" value="http://docs.jquery.com/action/render/UI/API/${release.version}/" />
- <get src="${url}Draggable" dest="${docs.dir}draggable.html" />
- <get src="${url}Droppable" dest="${docs.dir}droppable.html" />
- <get src="${url}Resizable" dest="${docs.dir}resizable.html" />
- <get src="${url}Selectable" dest="${docs.dir}selectable.html" />
- <get src="${url}Sortable" dest="${docs.dir}sortable.html" />
-
- <get src="${url}Accordion" dest="${docs.dir}accordion.html" />
- <get src="${url}Autocomplete" dest="${docs.dir}autocomplete.html" />
- <get src="${url}Button" dest="${docs.dir}button.html" />
- <get src="${url}Datepicker" dest="${docs.dir}datepicker.html" />
- <get src="${url}Dialog" dest="${docs.dir}dialog.html" />
- <get src="${url}Progressbar" dest="${docs.dir}progressbar.html" />
- <get src="${url}Slider" dest="${docs.dir}slider.html" />
- <get src="${url}Tabs" dest="${docs.dir}tabs.html" />
-
- <get src="${url}Position" dest="${docs.dir}position.html" />
-
- <get src="http://docs.jquery.com/action/render/UI/Effects/animate" dest="${docs.dir}animate.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/addClass" dest="${docs.dir}addClass.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/effect" dest="${docs.dir}effect.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/hide" dest="${docs.dir}hide.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/removeClass" dest="${docs.dir}removeClass.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/show" dest="${docs.dir}show.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/switchClass" dest="${docs.dir}switchClass.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/toggle" dest="${docs.dir}toggle.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/toggleClass" dest="${docs.dir}toggleClass.html" />
-
-
- <get src="http://docs.jquery.com/action/render/UI/Effects/Blind" dest="${docs.dir}effect-blind.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Clip" dest="${docs.dir}effect-clip.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Drop" dest="${docs.dir}effect-drop.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Explode" dest="${docs.dir}effect-explode.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Fade" dest="${docs.dir}effect-fade.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Fold" dest="${docs.dir}effect-fold.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Puff" dest="${docs.dir}effect-puff.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Slide" dest="${docs.dir}effect-slide.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Scale" dest="${docs.dir}effect-scale.html" />
-
- <get src="http://docs.jquery.com/action/render/UI/Effects/Bounce" dest="${docs.dir}effect-bounce.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Highlight" dest="${docs.dir}effect-highlight.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Pulsate" dest="${docs.dir}effect-pulsate.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Shake" dest="${docs.dir}effect-shake.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Size" dest="${docs.dir}effect-size.html" />
- <get src="http://docs.jquery.com/action/render/UI/Effects/Transfer" dest="${docs.dir}effect-transfer.html" />
+ <parallel threadcount="8">
+
+ <get src="${url}Draggable" dest="${docs.dir}draggable.html" />
+ <get src="${url}Droppable" dest="${docs.dir}droppable.html" />
+ <get src="${url}Resizable" dest="${docs.dir}resizable.html" />
+ <get src="${url}Selectable" dest="${docs.dir}selectable.html" />
+ <get src="${url}Sortable" dest="${docs.dir}sortable.html" />
+
+ <get src="${url}Accordion" dest="${docs.dir}accordion.html" />
+ <get src="${url}Autocomplete" dest="${docs.dir}autocomplete.html" />
+ <get src="${url}Button" dest="${docs.dir}button.html" />
+ <get src="${url}Datepicker" dest="${docs.dir}datepicker.html" />
+ <get src="${url}Dialog" dest="${docs.dir}dialog.html" />
+ <get src="${url}Menu" dest="${docs.dir}menu.html" />
+ <get src="${url}Progressbar" dest="${docs.dir}progressbar.html" />
+ <get src="${url}Slider" dest="${docs.dir}slider.html" />
+ <get src="${url}Spinner" dest="${docs.dir}spinner.html" />
+ <get src="${url}Tooltip" dest="${docs.dir}tooltip.html" />
+ <get src="${url}Tabs" dest="${docs.dir}tabs.html" />
+
+ <get src="${url}Position" dest="${docs.dir}position.html" />
+
+ <get src="http://docs.jquery.com/action/render/UI/Effects/animate" dest="${docs.dir}animate.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/addClass" dest="${docs.dir}addClass.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/effect" dest="${docs.dir}effect.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/hide" dest="${docs.dir}hide.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/removeClass" dest="${docs.dir}removeClass.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/show" dest="${docs.dir}show.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/switchClass" dest="${docs.dir}switchClass.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/toggle" dest="${docs.dir}toggle.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/toggleClass" dest="${docs.dir}toggleClass.html" />
+
+
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Blind" dest="${docs.dir}effect-blind.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Clip" dest="${docs.dir}effect-clip.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Drop" dest="${docs.dir}effect-drop.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Explode" dest="${docs.dir}effect-explode.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Fade" dest="${docs.dir}effect-fade.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Fold" dest="${docs.dir}effect-fold.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Puff" dest="${docs.dir}effect-puff.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Slide" dest="${docs.dir}effect-slide.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Scale" dest="${docs.dir}effect-scale.html" />
+
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Bounce" dest="${docs.dir}effect-bounce.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Highlight" dest="${docs.dir}effect-highlight.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Pulsate" dest="${docs.dir}effect-pulsate.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Shake" dest="${docs.dir}effect-shake.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Size" dest="${docs.dir}effect-size.html" />
+ <get src="http://docs.jquery.com/action/render/UI/Effects/Transfer" dest="${docs.dir}effect-transfer.html" />
+ </parallel>
</target>
-
+
<target name="themes-download">
<!-- to create/update query strings for the theme-file, execute this in Firebug on /download page:
$("select option[value!=none]").map(function() { $(this).parent().val(this.value).change(); return $(this).parents("form").serialize(); }).get().join(",");
<sequential>
<get src="http://ui-dev.jquery.com/download/?@{url}" dest="${zip}" />
<unzip src="${zip}"
- dest="${dist.dir}themes/">
- <patternset>
- <include name="development-bundle/themes/**"/>
- <exclude name="development-bundle/themes/base/**"/>
- </patternset>
+ dest="${dist.dir}themes/">
+ <patternset>
+ <include name="development-bundle/themes/**"/>
+ <exclude name="development-bundle/themes/base/**"/>
+ </patternset>
<mapper type="glob" from="development-bundle/themes/*" to="*" />
</unzip>
<delete file="${zip}" />
<target name="whitespace">
<replaceregexp match="[\t ]+$" replace="" flags="g" byline="true">
- <fileset dir="${src.dir}" includes="*.js"/>
- <fileset dir="${src.dir}/i18n/" includes="*.js"/>
+ <fileset dir="${src.dir}" includes="*.js"/>
+ <fileset dir="${src.dir}/i18n/" includes="*.js"/>
</replaceregexp>
<echo message="All trailing spaces removed." />
</target>
-
+
+ <target name="size" depends="copy, minify, replace-version, prepend-header" description="Report sizes of files">
+ <echo message="Collecting files to size" />
+ <mkdir dir="${size.dir}" />
+ <copy todir="${size.dir}">
+ <fileset dir="${dist.dir}/ui" includes="*.js" />
+ <fileset dir="${dist.dir}/ui/i18n" includes="*.js" />
+ <fileset dir="${dist.dir}/ui/minified" includes="*.js" />
+ <fileset dir="${dist.dir}/ui/minified/i18n" includes="*.js" />
+ <fileset dir="${dist.dir}/themes/base" includes="*.css" />
+ <fileset dir="${dist.dir}/themes/base/minified" includes="*.css" />
+ </copy>
+ <echo message="GZipping Minified" />
+ <parallel threadsperprocessor="2">
+ <apply executable="gzip">
+ <fileset dir="${size.dir}" includes="*.min.js" />
+ <fileset dir="${size.dir}" includes="*.min.css" />
+ <arg value="-c" />
+ <srcfile />
+ <redirector>
+ <outputmapper id="out" type="glob" from="*" to="${size.dir}/*.gz"/>
+ </redirector>
+ </apply>
+ </parallel>
+ <echo message="Comparing file size with previous build" />
+ <exec executable="bash">
+ <arg value="-c" />
+ <arg value="wc -c ${size.dir}/* | `which node nodejs` build/sizer.js" />
+ </exec>
+ <delete dir="${size.dir}" />
+ </target>
+
<target name="cdn">
- <delete dir="${cdndist.dir}" />
- <mkdir dir="${cdndist.dir}" />
+ <delete dir="${cdndist.dir}" />
+ <mkdir dir="${cdndist.dir}" />
<copy todir="${cdndist.dir}">
<fileset dir=".." includes="AUTHORS.txt, GPL-LICENSE.txt, MIT-LICENSE.txt, version.txt" />
</copy>
<fileset dir="${cdndist.dir}" />
</checksum>
<for param="file">
- <path><fileset dir="${cdndist.dir}" includes="**/" excludes="**/*.MD5" /></path>
+ <path><fileset dir="${cdndist.dir}" includes="**/" excludes="**/*.MD5" /></path>
<sequential>
- <!-- @{file} is an absolute path, use that ugly regexes to make it relative -->
+ <!-- @{file} is an absolute path, use that ugly regexes to make it relative -->
<propertyregex override="yes" property="relativepath" input="@{file}" regexp=".+?cdn[\\/](.+)$" replace="\1"/>
<propertyregex override="yes" property="relativepath" input="${relativepath}" regexp="\\" replace="/" global="true" />
<concat destfile="${cdndist.dir}/MANIFEST" append="yes">${relativepath} </concat>
<zip destfile="${dist.dir}/../${release.filename}-mscdn.zip">
<zipfileset dir="dist/${release.filename}-cdn/" />
</zip>
- </target>
+ </target>
</project>