1 <project name=
"x-sass-impl">
4 Uses the compiler to generate the top-level scss file for the app
5 by using the current set of js files to determine the Components
6 used by the app, then including the corresponding scss files into the
9 <target name=
"-compile-sass" depends=
"-init-app-js-files">
10 <local name=
"app.out.scss.tmp"/>
11 <local name=
"sass.name.filter"/>
12 <property name=
"app.out.scss.tmp" value=
"${app.out.scss}.tmp"/>
14 path=
"${build.out.resources.dir}"
15 property=
"image.search.path"/>
18 <x-is-true value=
"${build.include.all.scss}"/>
20 <property name=
"sass.name.filter">
26 <property name=
"sass.name.filter">
31 <local name=
"var.begin"/>
32 <local name=
"var.end"/>
33 <local name=
"resource.map.base"/>
35 <condition property=
"var.begin" value=
"dynamic(">
36 <isset property=
"framework.isV6"/>
38 <condition property=
"var.end" value=
")">
39 <isset property=
"framework.isV6"/>
42 <property name=
"var.begin" value=
""/>
43 <property name=
"var.end" value=
"!default"/>
45 <condition property=
"resource.map.base" value=
"${css.output.rel.path}">
46 <x-is-true value=
"${app.sass.dynamic}"/>
48 <property name=
"resource.map.base" value=
""/>
51 <x-is-true value=
"${app.sass.dynamic}"/>
54 from=
"${build.out.css.dir}"
55 to=
"${build.out.base.path}"
56 property=
"css.output.rel.path"/>
60 <property name=
"css.output.rel.path" value=
""/>
62 <x-compile refid=
"${compiler.ref.id}">
66 #only set variables for used classes eg. $include-class-name
69 -variable=$app-name: ${var.begin} '${app.name}' ${var.end}
70 -variable=$image-search-path:'${image.search.path}'
71 -variable=$theme-name: ${var.begin} '${theme.name}' ${var.end}
72 -resourceMapBase=${css.output.rel.path}
73 -output=${app.out.scss.tmp}
74 -forward=${app.sass.dynamic}
79 # include etc and vars from all classes
84 -output=${app.out.scss.tmp}
85 -forward=${app.sass.dynamic}
89 #only include rules from used classes
93 -output=${app.out.scss.tmp}
97 -sassCacheDir=${compass.cache.dir}
98 -output=${app.out.ruby}
104 <filesmatch file1=
"${app.out.scss.tmp}" file2=
"${app.out.scss}"/>
107 <copy file=
"${app.out.scss.tmp}" tofile=
"${app.out.scss}" overwrite=
"true"/>
112 app.out.css.path is relative to the app output index.html file
117 property=
"app.out.css.path"
120 <!--update the application's bootstrap.css file to point to the build output-->
121 <echo file=
"${build.bootstrap.css.path}">
124 * This file is generated by Sencha Cmd and should NOT be edited. It redirects
125 * to the most recently built CSS file for the application to allow index.html
126 * in the development directory to load properly (i.e.,
"dev mode").
128 @import '${app.out.css.path}';
134 This macrodef is used for post-processing Ext JS 4.2+ style theme css files
135 and will split based on selector thresholds, as well as run the css preprocessor
138 <macrodef name=
"x-compress-css-files">
139 <attribute name=
"dir"/>
140 <attribute name=
"prefix"/>
141 <attribute name=
"outprefix"/>
142 <attribute name=
"compress"/>
143 <attribute name=
"preprocess"/>
145 <x-split-css file=
"@{dir}/@{prefix}.css"
146 outdir=
"${build.resources.dir}"
147 limit=
"${build.css.selector.limit}"
148 compilerRefId=
"${compiler.ref.id}"/>
150 <for param=
"cssfile">
151 <fileset dir=
"@{dir}" includes=
"@{prefix}*.css"/>
153 <local name=
"css.output.name"/>
154 <local name=
"pattern"/>
155 <property name=
"pattern" value=
"(.*?)(@{prefix})(_\d{1,2})*\.css"/>
156 <propertyregex property=
"css.output.name"
159 select=
"\1@{outprefix}\3.css"
162 <equals arg1=
"@{preprocess}" arg2=
"true"/>
164 <x-echo>Preprocessing @{cssfile} to ${css.output.name}
</x-echo>
167 tofile=
"${css.output.name}"
168 options=
"${build.css.preprocessor.opts}"/>
172 <equals arg1=
"@{compress}" arg2=
"true"/>
174 <x-echo>Compressing @{cssfile} to ${css.output.name}
</x-echo>
175 <x-compress-css srcfile=
"@{cssfile}"
176 outfile=
"${css.output.name}"/>
185 This target builds Ext JS 4.2+ style themes, first generating the top-level
186 scss file, then running compass with the css, sass, and config options set
188 <target name=
"-compass-compile-theme-package" depends=
"-load-sass-page">
189 <x-run-if-true value=
"${enable.ext42.themes}">
190 <local name=
"compress.uptodate"/>
192 <x-ant-call target=
"-compile-sass"/>
195 <x-is-true value=
"${app.sass.fashion}"/>
198 <x-is-true value=
"${app.sass.rhino}"/>
201 file=
"${app.out.scss}"
202 toFile=
"${app.out.css}"/>
205 <x-sass-build input=
"${app.out.scss}"
206 output=
"${app.out.css}"
207 refId=
"app.web.server"
208 split=
"${build.css.selector.limit}"
209 compress=
"${build.css.compress}"
210 updateSplitFiles=
"true"
211 compilerRefId=
"${compiler.ref.id}"/>
217 rubyPath=
"${build.ruby.path}"
218 dir=
"${compass.working.dir}"
219 trace=
"${compass.compile.trace}"
220 boring=
"${compass.compile.boring}"
221 force=
"${compass.compile.force}"
222 sassdir=
"${compass.sass.dir}"
223 cssdir=
"${compass.css.dir}"
224 config=
"${compass.config.file}"/>
226 <uptodate property=
"compress.uptodate"
228 srcfile=
"${app.out.scss}.tmp"
229 targetfile=
"${app.out.css}"/>
232 <x-is-true value=
"${compress.uptodate}"/>
233 <!--<x-is-true value="true"/>-->
235 <x-compress-css-files dir=
"${build.out.css.dir}"
236 prefix=
"${app.out.base.debug}"
237 outprefix=
"${app.out.base}"
238 preprocess=
"${build.css.preprocess}"
239 compress=
"${build.css.compress}"/>
248 This is a legacy macrodef to support building Ext JS 4.1 themes, which have been
249 deprecated in favor of Ext JS 4.2 theme packages
251 <macrodef name=
"x-build-sass">
252 <attribute name=
"theme"/>
254 <local name=
"sass.name"/>
255 <local name=
"use.shell"/>
258 convert abspath to just the leaf path name
260 <basename property=
"sass.name" file=
"@{theme}"/>
261 <local name=
"sass.base.name"/>
262 <property name=
"sass.base.name" value=
"${sass.name}"/>
264 <echo>Compiling sass directory : @{theme}/sass
</echo>
266 rubyPath=
"${build.ruby.path}"
267 boring=
"${compass.compile.boring}"
268 force=
"${compass.compile.force}"
269 trace=
"${compass.compile.trace}"
270 dir=
"@{theme}/sass"/>
272 <x-compress-css srcfile=
"${app.dir}/resources/${sass.base.name}/*.css"
273 outdir=
"${app.dir}/resources/${sass.base.name}"/>
278 This target builds Ext JS 4.1 style themes, iterating over each directory
279 under the specified ${app.theme.dir} directory and compiling the sass
282 <target name=
"-compass-compile-theme-folders">
283 <x-run-if-true value=
"${enable.ext41.themes}">
284 <!-- run sass compilation over the various themes -->
286 <dirset dir=
"${app.theme.dir}" includes=
"*"/>
288 <x-build-sass theme=
"@{sass}"/>
295 This target builds Touch style themes, by running compass
296 over the directory containing the manually maintined scss files
298 <target name=
"-compass-compile-sass-dir">
299 <x-run-if-true value=
"${enable.touch.themes}">
301 rubyPath=
"${build.ruby.path}"
302 trace=
"${compass.compile.trace}"
303 boring=
"${compass.compile.boring}"
304 force=
"${compass.compile.force}"
305 dir=
"${compass.sass.dir}"/>
310 This is a summation target triggering the three different supported
311 sass modes (ext 41, ext 42+, and touch).
313 <target name=
"-compass-compile"
314 depends=
"-compass-compile-theme-package,
315 -compass-compile-theme-folders,
316 -compass-compile-sass-dir"/>
321 <target name=
"-before-sass"/>
322 <target name=
"-sass" depends=
"-compass-compile"/>
323 <target name=
"-after-sass"/>