Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
tree: 6e5e5a08e8
Fetching contributors…

Cannot retrieve contributors at this time

197 lines (174 sloc) 6.785 kb
<?xml version="1.0" encoding="UTF-8"?>
<project name="Common web tasks">
<property name="webtasks.dir" value="./" />
<taskdef name="yuicompress" classname="com.yahoo.platform.yui.compressor.YUICompressTask">
<classpath>
<fileset dir="${webtasks.dir}">
<include name="*.jar" />
</fileset>
</classpath>
</taskdef>
<taskdef name="cc-compress" classname="com.google.javascript.jscomp.ant.CompileTask" classpath="${webtasks.dir}/cc/compiler.jar"/>
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${webtasks.dir}/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<property name="webtasks.inited" value="false"/>
<target name="webtasks.init">
<property name="webtasks.inited" value="true"/>
<tempfile property="webtasks.temp-file"/>
<if>
<isset property="webtasks.log-file"/>
<then>
<delete file="${webtasks.log-file}"/>
<touch file="${webtasks.log-file}"/>
</then>
</if>
</target>
<macrodef name="minify" description="Минификация всех JS/CSS-файлов с помощью YUI Compressor внутри директории @dir">
<attribute name="dir" />
<attribute name="todir" default="@{dir}" />
<sequential>
<yuicompress linebreak="5000" warn="false" munge="yes" preserveallsemicolons="true" outputfolder="@{todir}">
<fileset dir="@{dir}">
<include name="*.js" />
<include name="*.css" />
</fileset>
</yuicompress>
</sequential>
</macrodef>
<macrodef name="cssGlue" description="Склейщик CSS-файлов. Просматривает CSS-файлы внутри @dir, заменяет импорты, начинающиеся с подчеркивания, на содержимое файла и сохраняет результат в @todir">
<attribute name="dir"/>
<attribute name="todir"/>
<attribute name="force" default="false"/>
<attribute name="exclude" default=""/>
<sequential>
<cssGlueRunner todir="@{todir}" force="@force">
<fileset dir="@{dir}">
<include name="**/*.css"/>
<exclude name="**/_*.css"/>
<exclude name="@{exclude}"/>
</fileset>
</cssGlueRunner>
</sequential>
</macrodef>
<scriptdef language="javascript" name="cssGlueRunner" src="${webtasks.dir}/css-glue.js">
<attribute name="todir"/>
<attribute name="force"/>
<element name="fileset" type="fileset"/>
</scriptdef>
<macrodef name="compress-css" description="Сжимает все CSS файлы в директории @dir: склеивает в один файлы необходимые импорты и результат сжимает YUICompressor">
<attribute name="dir"/>
<attribute name="todir"/>
<attribute name="force" default="false"/>
<attribute name="exclude" default=""/>
<sequential>
<tempfile property="webtasks.temp-file"/>
<tstamp>
<format property="webtasks.touch-time" pattern="MM/dd/yyyy hh:mm aa" offset="-2" unit="second"/>
</tstamp>
<touch file="${webtasks.temp-file}" datetime="${webtasks.touch-time}" />
<cssGlue dir="@{dir}" todir="@{todir}" force="@{force}" exclude="@{exclude}"/>
<!--
Проходимся по всем файлам и проверяем, поменялась ли их дата модификации.
Если поменялась — сжимаем YUICompressor
-->
<for param="file">
<fileset dir="@{todir}">
<include name="**/*.css"/>
</fileset>
<sequential>
<outofdate>
<sourcefiles>
<fileset file="@{file}"/>
</sourcefiles>
<targetfiles>
<fileset file="${webtasks.temp-file}"/>
</targetfiles>
<sequential>
<dirname file="@{file}" property="webtasks.temp-css-dir"/>
<compress-single-file file="@{file}" todir="${webtasks.temp-css-dir}"/>
<var name="webtasks.temp-css-dir" unset="true"/>
</sequential>
</outofdate>
</sequential>
</for>
<delete file="${webtasks.temp-file}"/>
</sequential>
</macrodef>
<macrodef name="compress-js-lib" description="Сжимает библиотеку, состоящую из нескольких файлов, в один файл">
<attribute name="tofile"/>
<attribute name="force" default="false"/>
<attribute name="devdir" default="false"/>
<element name="files" implicit="true"/>
<sequential>
<!-- Using ant contrib -->
<if>
<or>
<not>
<uptodate targetfile="@{tofile}">
<srcresources>
<files/>
</srcresources>
</uptodate>
</not>
<istrue value="@{force}"/>
</or>
<then>
<concat destfile="@{tofile}">
<files/>
</concat>
<if>
<not>
<equals arg1="@{devdir}" arg2="false"/>
</not>
<then>
<copy file="@{tofile}" todir="@{devdir}"/>
</then>
</if>
<dirname file="@{tofile}" property="webtasks.temp-js-dir"/>
<compress-single-file file="@{tofile}" todir="${webtasks.temp-js-dir}" />
<var name="webtasks.temp-js-dir" unset="true"/>
</then>
</if>
</sequential>
</macrodef>
<macrodef name="compress-single-file" description="Сжимает один файл @file через YUICompressor и сохраняет результат в директории @todir">
<attribute name="file"/>
<attribute name="todir"/>
<sequential>
<yuicompress linebreak="5000" warn="false" munge="yes" preserveallsemicolons="true" outputfolder="@{todir}">
<fileset file="@{file}"/>
</yuicompress>
</sequential>
</macrodef>
<macrodef name="compress-js-lib-log" description="То же самое, что и &lt;compress-js-lib&gt;, только вед1т лог файлов, участвовавших к сжатии">
<attribute name="tofile"/>
<attribute name="force" default="false"/>
<attribute name="devdir" default="false"/>
<element name="file-list" implicit="true" />
<sequential>
<compress-js-lib tofile="@{tofile}" force="@{force}" devdir="@{devdir}">
<file-list/>
</compress-js-lib>
<makeurl file="@{tofile}" property="dest-url"/>
<var name="file-url" unset="true"/>
<echo message="${dest-url}${line.separator}" file="${webtasks.log-file}" append="true"/>
<for param="file">
<file-list/>
<sequential>
<makeurl file="@{file}" property="file-url"/>
<echo message=" ${file-url}${line.separator}" file="${webtasks.log-file}" append="true"/>
<var name="file-url" unset="true"/>
</sequential>
</for>
<var name="dest-url" unset="true"/>
</sequential>
</macrodef>
<scriptdef language="javascript" name="convert-log-to-xml" src="${webtasks.dir}/logger.js">
<attribute name="webroot"/>
<attribute name="dest"/>
<attribute name="src"/>
</scriptdef>
</project>
Jump to Line
Something went wrong with that request. Please try again.