<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
- <pathelement location="${basedir}/utils/ant-contrib-0.3.jar"/>
+ <pathelement location="${basedir}/utils/ant-contrib-1.0b3.jar"/>
+ </classpath>
+</taskdef>
+<taskdef resource="net/sf/antcontrib/antlib.xml">
+ <classpath>
+ <pathelement location="${basedir}/utils/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
-<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<target name="checkLang" description="Reports missing entries in language bundles compared to Message.properties">
<!-- adapted from http://stackoverflow.com/questions/14381660/ant-task-to-compare-two-properties-files -->
var logger = project.getBuildListeners( ).firstElement( );
logger.setMessageOutputLevel( 1 );
</script>
- <foreach target="compareProperties" param="file2">
+ <foreach target="compareBundles" param="file2">
<path>
<fileset dir="${basedir}/resources/lang">
<exclude name="Messages.properties" />
</foreach>
</target>
+<target name="compareBundles" description="compare a properties file with Messages.properties and vice versa">
+ <echo message=" "/>
+ <echo message="Missing message labels in ${file2} compared to Messages.properties"/>
+ <antcall target="compareProperties">
+ <param name="file1" value="resources/lang/Messages.properties"/>
+ <param name="file2" value="${file2}" />
+ </antcall>
+ <echo message=" "/>
+ <echo message="Missing message labels in Messages.properties compare to ${file2}"/>
+ <antcall target="compareProperties">
+ <param name="file2" value="resources/lang/Messages.properties"/>
+ <param name="file1" value="${file2}" />
+ </antcall>
+</target>
+
<target name="compareProperties" description="reports missing entries in one message bundle">
- <loadproperties srcFile="resources/lang/Messages.properties" prefix="prefixfile1"/>
+ <loadproperties srcFile="${file1}" prefix="prefixfile1"/>
<loadproperties srcFile="${file2}" prefix="prefixfile2"/>
<propertyselector property="file1.list" delimiter="," match="prefixfile1\.(.+)" select="\1"/>
<matches pattern=",@{file1.property}," string=",${file2.list}," />
</not>
<then>
- <if>
- <not>
- <isset property="some_missing"/>
- </not>
- <then>
- <echo message=" "/>
- <echo>**** Missing in ${file2}: ****</echo>
- </then>
- </if>
<property name="some_missing" value="true"/>
<antcall target="reportMissingProperty">
<param name="textLabel" value="@{file1.property}"/>
</if>
</sequential>
</for>
+ <if>
+ <not>
+ <isset property="some_missing"/>
+ </not>
+ <then>
+ <echo>No labels missing :-)</echo>
+ </then>
+ </if>
</target>
<target name="reportMissingProperty" description="double dereference 'prefixedPropertyName' and report missing language property">