• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" ?>
2
3<project name="libphonenumber-javascript" default="compile">
4  <property name="closure-compiler.dir"
5            value="${basedir}/../../closure-compiler" />
6  <property name="closure-compiler.jar"
7            value="${closure-compiler.dir}/target/closure-compiler-1.0-SNAPSHOT.jar" />
8  <property name="closure-library.dir"
9            value="${basedir}/../../closure-library" />
10  <property name="closure-linter.dir"
11            value="${basedir}/../../closure-linter" />
12  <property name="python-gflags.dir"
13            value="${basedir}/../../python-gflags" />
14
15  <macrodef name="closure-compile">
16    <attribute name="inputfile" />
17    <attribute name="outputfile" />
18    <attribute name="compilationlevel" default="ADVANCED_OPTIMIZATIONS" />
19    <attribute name="outputmode" default="compiled" />
20    <attribute name="outputwrapper" default="(function(){%output%})();" />
21    <element name="extraflags" optional="yes" />
22    <sequential>
23      <exec executable="python" failonerror="true" logError="true">
24        <arg value="${closure-library.dir}/closure/bin/calcdeps.py" />
25        <arg line='-i "@{inputfile}"' />
26        <arg line='--output_file "@{outputfile}"' />
27        <arg line='-p "${closure-library.dir}"' />
28        <arg line="-o @{outputmode}" />
29        <arg line='-c "${closure-compiler.jar}"' />
30        <arg line='-f "--output_wrapper=@{outputwrapper}"' />
31        <arg line='-f "--compilation_level=@{compilationlevel}"' />
32        <arg line='-f "--warning_level=VERBOSE"' />
33        <arg line='-f "--jscomp_error=accessControls"' />
34        <arg line='-f "--jscomp_error=checkDebuggerStatement"' />
35        <arg line='-f "--jscomp_error=checkRegExp"' />
36        <arg line='-f "--jscomp_error=checkTypes"' />
37        <arg line='-f "--jscomp_error=checkVars"' />
38        <arg line='-f "--jscomp_error=const"' />
39        <arg line='-f "--jscomp_error=constantProperty"' />
40        <arg line='-f "--jscomp_error=duplicate"' />
41        <arg line='-f "--jscomp_error=duplicateMessage"' />
42        <arg line='-f "--jscomp_error=es5Strict"' />
43        <arg line='-f "--jscomp_error=externsValidation"' />
44        <arg line='-f "--jscomp_error=extraRequire"' />
45        <arg line='-f "--jscomp_error=globalThis"' />
46        <arg line='-f "--jscomp_error=invalidCasts"' />
47        <arg line='-f "--jscomp_error=misplacedTypeAnnotation"' />
48        <arg line='-f "--jscomp_error=missingProperties"' />
49        <arg line='-f "--jscomp_error=missingRequire"' />
50        <arg line='-f "--jscomp_error=strictMissingRequire"' />
51        <arg line='-f "--jscomp_error=nonStandardJsDocs"' />
52        <arg line='-f "--jscomp_error=strictModuleDepCheck"' />
53        <arg line='-f "--jscomp_error=suspiciousCode"' />
54        <arg line='-f "--jscomp_error=typeInvalidation"' />
55        <arg line='-f "--jscomp_error=undefinedNames"' />
56        <arg line='-f "--jscomp_error=undefinedVars"' />
57        <arg line='-f "--jscomp_error=unknownDefines"' />
58        <arg line='-f "--jscomp_error=uselessCode"' />
59        <arg line='-f "--jscomp_error=visibility"' />
60        <extraflags />
61      </exec>
62    </sequential>
63  </macrodef>
64
65  <macrodef name="gjslint">
66    <attribute name="inputfile" />
67    <sequential>
68      <exec executable="python" failonerror="false" logError="true">
69        <env key="PYTHONPATH"
70             value="${closure-linter.dir}:${python-gflags.dir}"/>
71        <arg value="${closure-linter.dir}/closure_linter/gjslint.py" />
72        <arg line='--strict' />
73        <arg line='"@{inputfile}"' />
74      </exec>
75    </sequential>
76  </macrodef>
77
78  <condition property="os.iswindows">
79    <os family="windows" />
80  </condition>
81  <condition property="os.isunix">
82    <os family="unix" />
83  </condition>
84  <target name="nul" if="os.iswindows">
85    <property name="null.device" value="NUL" />
86  </target>
87  <target name="devnull" if="os.isunix">
88    <property name="null.device" value="/dev/null" />
89  </target>
90  <target name="setnulldevice" depends="nul,devnull" />
91
92  <target name="clean" description="deletes all generated files">
93    <delete file="i18n/phonenumbers/demo-compiled.js" />
94  </target>
95
96  <target name="compile-demo"
97          description="generates demo-compiled.js">
98    <closure-compile inputfile="i18n/phonenumbers/demo.js"
99                     outputfile="i18n/phonenumbers/demo-compiled.js">
100      <extraflags>
101        <arg line='-p "i18n/phonenumbers"' />
102        <arg line='-e "i18n/phonenumbers/metadatafortesting.js"' />
103        <arg line='-e "i18n/phonenumbers/metadatalite.js"' />
104        <arg line='-e "i18n/phonenumbers/regioncodefortesting.js"' />
105      </extraflags>
106    </closure-compile>
107  </target>
108
109  <target name="compile-tests" depends="setnulldevice">
110    <closure-compile inputfile="i18n/phonenumbers/asyoutypeformatter_test.js"
111                     outputfile="${null.device}">
112      <extraflags>
113        <arg line='-p "i18n/phonenumbers"' />
114        <arg line='-e "i18n/phonenumbers/metadata.js"' />
115        <arg line='-e "i18n/phonenumbers/metadatalite.js"' />
116      </extraflags>
117    </closure-compile>
118    <closure-compile inputfile="i18n/phonenumbers/phonenumberutil_test.js"
119                     outputfile="${null.device}">
120      <extraflags>
121        <arg line='-p "i18n/phonenumbers"' />
122        <arg line='-e "i18n/phonenumbers/metadata.js"' />
123        <arg line='-e "i18n/phonenumbers/metadatalite.js"' />
124      </extraflags>
125    </closure-compile>
126    <closure-compile inputfile="i18n/phonenumbers/shortnumberinfo_test.js"
127                     outputfile="${null.device}">
128      <extraflags>
129        <arg line='-p "i18n/phonenumbers"' />
130        <arg line='-e "i18n/phonenumbers/metadata.js"' />
131        <arg line='-e "i18n/phonenumbers/metadatalite.js"' />
132      </extraflags>
133    </closure-compile>
134  </target>
135
136  <target name="compile" depends="compile-demo,compile-tests" />
137
138  <target name="lint" description="lints all javascript files">
139    <gjslint inputfile="i18n/phonenumbers/asyoutypeformatter*.js" />
140    <gjslint inputfile="i18n/phonenumbers/demo.js" />
141    <gjslint inputfile="i18n/phonenumbers/phonenumberutil*.js" />
142    <gjslint inputfile="i18n/phonenumbers/shortnumberinfo*.js" />
143  </target>
144
145</project>
146