blob: 4f4df914a8040efef3d4b86880afa26fca61c960 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project default="validate" basedir="." name="validate">
<target name="validate" depends="validation-props, validate-xdocs,
validate-skinconf, validate-sitemap, validate-skins, validate-skinchoice,
validate-stylesheets" description="Validate all: xdocs, skins, sitemap, etc"/>
<target name="validation-props" depends="examine-proj">
<!-- Validation flags -->
<property name="forrest.validate" value="true" />
<condition property="validate">
<istrue value="${forrest.validate}"/>
</condition>
<property name="forrest.validate.failonerror" value="true" />
<property name="forrest.validate.includes" value="**/*"/>
<property name="forrest.validate.excludes" value=""/>
<property name="forrest.validate.xdocs" value="${forrest.validate}"/>
<condition property="validate.xdocs">
<and>
<istrue value="${forrest.validate.xdocs}"/>
<isset property="xdocs.present"/>
</and>
</condition>
<property name="forrest.validate.xdocs.includes" value="**/*.xml"/>
<property name="forrest.validate.xdocs.excludes" value="site.xml,.*.swp"/>
<property name="forrest.validate.xdocs.failonerror"
value="${forrest.validate.failonerror}" />
<property name="forrest.validate.skinconf" value="${forrest.validate}"/>
<condition property="validate.skinconf">
<and>
<istrue value="${forrest.validate.skinconf}"/>
<isset property="skinconf.present"/>
</and>
</condition>
<basename file="${skinconf}" property="skinconf-file"/>
<property name="forrest.validate.skinconf.includes" value="${skinconf-file}"/>
<property name="forrest.validate.skinconf.excludes" value=""/>
<property name="forrest.validate.skinconf.failonerror"
value="${forrest.validate.failonerror}" />
<property name="forrest.validate.sitemap" value="${forrest.validate}"/>
<condition property="validate.sitemap">
<and>
<istrue value="${forrest.validate.sitemap}"/>
<isset property="sitemap.present"/>
</and>
</condition>
<property name="forrest.validate.sitemap.includes" value=""/>
<property name="forrest.validate.sitemap.excludes" value=""/>
<property name="forrest.validate.sitemap.failonerror"
value="${forrest.validate.failonerror}" />
<property name="forrest.validate.stylesheets" value="${forrest.validate}"/>
<condition property="validate.stylesheets">
<and>
<istrue value="${forrest.validate.stylesheets}"/>
<isset property="stylesheets.present"/>
</and>
</condition>
<property name="forrest.validate.stylesheets.includes" value="**/*.xsl"/>
<property name="forrest.validate.stylesheets.excludes" value=""/>
<property name="forrest.validate.stylesheets.failonerror"
value="${forrest.validate.failonerror}" />
<property name="forrest.validate.skins" value="${forrest.validate}"/>
<condition property="validate.skins">
<and>
<istrue value="${forrest.validate.skins}"/>
<isset property="skins.present"/>
</and>
</condition>
<property name="forrest.validate.skins.includes" value="**/*"/>
<property name="forrest.validate.skins.excludes" value="**/*.xsl"/>
<property name="forrest.validate.skins.failonerror"
value="${forrest.validate.failonerror}" />
<property name="forrest.validate.skins.stylesheets" value="${forrest.validate.skins}"/>
<condition property="validate.skins.stylesheets">
<and>
<istrue value="${forrest.validate.skins.stylesheets}"/>
<isset property="skins.present"/>
</and>
</condition>
<property name="forrest.validate.skins.stylesheets.includes" value="**/*.xsl"/>
<property name="forrest.validate.skins.stylesheets.excludes" value=""/>
<property name="forrest.validate.skins.stylesheets.failonerror"
value="${forrest.validate.skins.failonerror}" />
<path id="fcatalog.path">
<pathelement location="${forrest.core.webapp}/resources/schema/catalog.xcat"/>
<pathelement location="${forrest.plugins-dir}/catalog.xcat"/>
<pathelement location="${catalog}"/>
</path>
<xmlcatalog id="fcatalog">
<catalogpath>
<path refid="fcatalog.path"/>
</catalogpath>
</xmlcatalog>
<echo level="info" message="Using these catalog descriptors: ${toString:fcatalog.path}"/>
</target>
<target name="validate-site" depends="load-project-props">
<condition property="forrest.validate.skinconf.disable-xml-link">
<and>
<istrue value="${skinconfig.disable-xml-link}"/>
</and>
</condition>
<fail if="forrest.validate.skinconf.disable-xml-link">
---------------------------------------
${skinconfig.project-name} has configured disable-xml-link=true
To validate this site, please change to disable-xml-link=false
${skinconf}
then generate your site with 'forrest', then do 'forrest validate-site'.
---------------------------------------
</fail>
<xmlvalidate failonerror="${forrest.validate.site.failonerror}" lenient="no" warn="yes">
<attribute name="http://apache.org/xml/features/validation/dynamic" value="true"/>
<xmlcatalog refid="fcatalog" />
<fileset dir="${project.site-dir}"
includes="${forrest.validate.xdocs.includes}"
excludes="${forrest.validate.xdocs.excludes}"/>
</xmlvalidate>
<echo level="info" message="...validated site"/>
</target>
<target name="validate-xdocs" depends="init, validation-props" if="validate.xdocs"
description="Validate the project xdocs">
<xmlvalidate failonerror="${forrest.validate.xdocs.failonerror}" lenient="no" warn="yes" classpathref="forrest.cp" classname="org.apache.xerces.parsers.SAXParser">
<attribute name="http://apache.org/xml/features/validation/dynamic" value="true"/>
<xmlcatalog refid="fcatalog" />
<fileset dir="${xdocs-dir}"
includes="${forrest.validate.xdocs.includes}"
excludes="${forrest.validate.xdocs.excludes}"/>
</xmlvalidate>
<echo level="info" message="...validated xdocs"/>
</target>
<target name="validate-status" depends="init" description="Validate the project status changes file">
<xmlvalidate file="${project.status}" failonerror="yes" lenient="no" warn="yes" classpathref="forrest.cp" classname="org.apache.xerces.parsers.SAXParser">
<attribute name="http://apache.org/xml/features/validation/dynamic" value="true"/>
<xmlcatalog refid="fcatalog"/>
</xmlvalidate>
<echo level="info" message="...validated ${project.status}"/>
</target>
<target name="validate-skinconf" depends="validation-props"
if="validate.skinconf" description="Validate skinconf">
<xmlvalidate failonerror="${forrest.validate.skinconf.failonerror}"
lenient="no" warn="yes">
<xmlcatalog refid="fcatalog" />
<fileset dir="${content-dir}"
includes="${forrest.validate.skinconf.includes}"
excludes="${forrest.validate.skinconf.excludes}"/>
</xmlvalidate>
<echo level="info" message="...validated skinconf"/>
</target>
<target name="validate-sitemap" depends="validation-props"
if="validate.sitemap" description="Validate the project sitemap">
<jing rngfile="${forrest.core.webapp}/resources/schema/relaxng/sitemap-v06.rng">
<fileset dir="${content-dir}"
includes="${forrest.validate.sitemap.includes}"
excludes="${forrest.validate.sitemap.excludes}">
<include name="sitemap.xmap"/>
</fileset>
</jing>
<echo level="info" message="...validated project sitemap"/>
</target>
<target name="validate-stylesheets" depends="validation-props"
if="validate.stylesheets" description="Validate XSL files">
<jing rngfile="${forrest.core.webapp}/resources/schema/relaxng/xslt.rng">
<fileset dir="${stylesheets-dir}"
includes="${forrest.validate.stylesheets.includes}"
excludes="${forrest.validate.stylesheets.excludes}" />
</jing>
<echo level="info" message="...validated stylesheets"/>
</target>
<target name="validate-skins" depends="validate-skins-stylesheets" description="Validate skins"/>
<target name="validate-skins-stylesheets" depends="validation-props"
if="validate.skins.stylesheets">
<jing rngfile="${forrest.core.webapp}/resources/schema/relaxng/xslt.rng">
<fileset dir="${skins-dir}"
includes="${forrest.validate.skins.stylesheets.includes}"
excludes="${forrest.validate.skins.stylesheets.excludes}"/>
</jing>
<echo level="info" message="...validated skin stylesheets"/>
</target>
<!-- Check that ${project.skin} points to an existing skin. -->
<target name="validate-skinchoice" depends="validation-props" description="Validate skin choice">
<condition property="project.skin.present">
<available file="${project.skin}" type="dir">
<filepath path="${skins-dir}"/>
<filepath path="${forrest.skins-dir}"/>
</available>
</condition>
<loadfile property="skin-not-found-message" srcFile="${forrest.core}/var/skin-not-found-message.txt">
<filterchain>
<expandproperties/>
</filterchain>
</loadfile>
<fail unless="project.skin.present">
${skin-not-found-message}
</fail>
<echo level="info" message="...validated existence of skin '${project.skin}'"/>
</target>
</project>