<project name="mibew messenger" default="usage"> <property name="webim_path" value="webim" /> <property name="closure.c" value="/opt/closure/compiler.jar" /> <property name="dialogs_styles_path" value="${webim_path}/styles/dialogs" /> <property name="js_path" value="${webim_path}/js" /> <!-- Help message about all available targets --> <target name="usage"> <echo>Available targets:</echo> <echo>styles_handlebars - Compile Handlebars templates for dialogs styles</echo> <echo>styles_js - Compile JavaScript files for all dialogs styles</echo> <echo>styles_all - Run styles_handlebars and styles_js tasks</echo> <echo>chat_app_js - Build JavaScript files related to chat application</echo> <echo>default_app_js - Build JavaScript files related to default application</echo> <echo>core_handlebars - Compile Handlebars templates of the Core</echo> <echo>all - Build everything</echo> </target> <!-- Compile Handlebars templates for dialogs styles --> <target name="styles_handlebars"> <echo>Compile Handlebars templates for dialogs styles</echo> <apply executable="handlebars"> <arg value="-m"/> <arg value="-f"/> <targetfile /> <dirset dir="."> <include name="${dialogs_styles_path}/*/handlebars_templates" /> </dirset> <mapper type="glob" from="*/handlebars_templates" to="*/js/compiled/templates.js" /> </apply> <echo>Done</echo> </target> <!-- Compile and concatenate JavaScript files for dialog styles --> <target name="styles_js"> <echo>Compile and concatenate JavaScript files for dialogs styles:</echo> <!-- Create temporary directories for compiled JavaScript files --> <echo>Create temporary directories</echo> <apply executable="mkdir" addsourcefile="false"> <targetfile /> <dirset dir="."> <include name="${dialogs_styles_path}/*/js/source" /> </dirset> <mapper type="glob" from="*/source" to="*/tmp" /> </apply> <!-- Compile JavaScript files --> <echo>Compile JavaScript files</echo> <apply executable="java"> <arg value="-jar" /> <arg value="${closure.c}" /> <arg value="--js" /> <srcfile /> <arg value="--js_output_file" /> <targetfile /> <fileset dir="."> <include name="${dialogs_styles_path}/*/js/source/*.js" /> </fileset> <mapper type="regexp" from="^(.+)/source/(.+)$$" to="\1/tmp/\2" /> </apply> <!-- Concatenate all scripts in one file. Use special script for expanding wildcards. --> <echo>Concatenate JavaScript files</echo> <apply executable="build_scripts/cat"> <srcfile suffix="/*.js"/> <targetfile /> <dirset dir="."> <include name="${dialogs_styles_path}/*/js/tmp" /> </dirset> <mapper type="glob" from="*/tmp" to="*/compiled/scripts.js" /> </apply> <!-- Remove temporary directories --> <echo>Remove temporary directories</echo> <apply executable="rm"> <arg value="-r" /> <arg value="-f" /> <dirset dir="."> <include name="${dialogs_styles_path}/*/js/tmp" /> </dirset> </apply> <echo>Done</echo> </target> <!-- Build all stuff related to dialogs styles --> <target name="styles_all" depends="styles_handlebars,styles_js"> <echo>Dialogs styles built.</echo> </target> <!-- Compile all JavaScript files of the Mibew Core --> <target name="compile_js"> <echo>Compile JavaScript files of the Mibew Core</echo> <!-- Copy directory tree from source to compiled --> <echo>Copy directory tree</echo> <copy todir="${js_path}/compiled"> <dirset dir="${js_path}/source"> <include name="**" /> </dirset> </copy> <!-- Compile JavaScript files --> <echo>Compile JavaScript files</echo> <apply executable="java"> <arg value="-jar" /> <arg value="${closure.c}" /> <arg value="--js" /> <srcfile /> <arg value="--js_output_file" /> <targetfile /> <fileset dir="."> <include name="${js_path}/source/**/*.js" /> </fileset> <mapper type="regexp" from="^(.+)/source/(.+)$$" to="\1/compiled/\2" /> </apply> <echo>Done</echo> </target> <!-- Build JavaScript application --> <target name="app_js"> <echo>Build "${app_name}" JavaScript application</echo> <!-- Initialization code goes first. Preserve header comment but strip empty lines --> <concat destfile="${js_path}/compiled/${app_name}_app.js" eol="lf"> <filelist dir="${js_path}/compiled/${app_name}" files="init.js" /> <!-- Apply filters --> <filterchain> <!-- Skip empty lines --> <linecontainsregexp negate="true"> <regexp pattern="^\s+$$" /> </linecontainsregexp> </filterchain> </concat> <!-- Append application files to the result file --> <concat destfile="${js_path}/compiled/${app_name}_app.js" eol="lf" append="true"> <!-- Include files from ${js_path}/compiled/${app_name}/ --> <fileset dir="${js_path}/compiled/${app_name}"> <include name="*.js" /> <exclude name="init.js" /> <exclude name="app.js" /> </fileset> <!-- Include models files --> <fileset dir="${js_path}/compiled/${app_name}/models"> <include name="**/base*.js" /> </fileset> <fileset dir="${js_path}/compiled/${app_name}/models"> <include name="**/*.js" /> <!-- Exclude base files --> <exclude name="**/base*.js" /> </fileset> <!-- Include collections files --> <fileset dir="${js_path}/compiled/${app_name}/collections"> <include name="**/base*.js" /> </fileset> <fileset dir="${js_path}/compiled/${app_name}/collections"> <include name="**/*.js" /> <!-- Exclude base files --> <exclude name="**/base*.js" /> </fileset> <!-- Include views files --> <fileset dir="${js_path}/compiled/${app_name}/views"> <include name="**/base*.js" /> </fileset> <fileset dir="${js_path}/compiled/${app_name}/views"> <include name="**/*.js" /> <!-- Exclude base files --> <exclude name="**/base*.js" /> </fileset> <!-- Include all other files --> <fileset dir="${js_path}/compiled/${app_name}"> <include name="**/base*.js" /> <exclude name="**/models/base*.js" /> <exclude name="**/collections/base*.js" /> <exclude name="**/views/base*.js" /> </fileset> <fileset dir="${js_path}/compiled/${app_name}"> <include name="**/*.js" /> <!-- Exclude files from ${js_path}/compiled/${app_name}/ --> <exclude name="*.js" /> <!-- Exclude base files --> <exclude name="**/base*.js" /> </fileset> <fileset dir="${js_path}/compiled/${app_name}"> <include name="app.js" /> </fileset> <!-- Apply filters --> <filterchain> <stripjavacomments /> <!-- Skip empty lines --> <linecontainsregexp negate="true"> <regexp pattern="^\s+$$" /> </linecontainsregexp> </filterchain> </concat> <echo>Done</echo> </target> <!-- Build JavaScript files related to default application --> <target name="default_app_js" depends="compile_js"> <antcall target="app_js"> <param name="app_name" value="default" /> </antcall> <echo>Default JavaScript application built.</echo> </target> <!-- Compile and concatenate JavaScript files related to chat application --> <target name="chat_app_js" depends="default_app_js"> <antcall target="app_js"> <param name="app_name" value="chat" /> </antcall> <echo>Chat JavaScript application built.</echo> </target> <!-- Compile Handlebars templates of the Core --> <target name="core_handlebars"> <echo>Compile Handlebars templates of the Core</echo> <apply executable="handlebars"> <arg value="-m"/> <arg value="-f"/> <targetfile /> <fileset dir="."> <include name="${js_path}/templates/source/*.handlebars" /> </fileset> <mapper type="regexp" from="^(.*)/source/(.*)\.handlebars$$" to="\1/compiled/\2.tpl.js" /> </apply> <echo>Done</echo> </target> <!-- Build all project --> <target name="all" depends="core_handlebars,chat_app_js,styles_all"> <echo>Mibew Messenger built.</echo> </target> </project>