blob: 0eb6741f1480e39f46068e2031dbcae79c647955 [file] [log] [blame]
<!--
Copyright (c) 2023 Willink Transformations and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
E.D.Willink - initial API and implementation
-->
<!--
Some of the code below is
(c) Chris Aniszczyk <caniszczyk@gmail.com>
(c) Lawrence Mandel <lmandel@ca.ibm.com>
(c) Peter Friese <peter.friese@itemis.com>
-->
<project name="org.eclipse.qvtd.doc" default="build-doc" basedir=".">
<!--
Global vars
-->
<property name="document.name" value="qvtd"/>
<property name="document.stylesheet" value="styles/html.xsl"/>
<property name="document.pdf.stylesheet" value="styles/xmpp.xsl"/>
<property name="document.eclipse.stylesheet" value="styles/eclipsehelp.xsl"/>
<property name="eclipsehelp-css.file" value="styles/book.css" />
<property name="html-css.file" value="styles/book.css" />
<property name="build.dir" value="build" />
<property name="download.dir" value="${java.io.tmpdir}${file.separator}downloads"/>
<!--
WikiText Toolchain
<property name="wikitext.url" value="http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/tools/mylyn/update/weekly/mylyn-wikitext-standalone-latest.zip"/>
<property name="wikitext.url" value="http://download.eclipse.org/mylyn/snapshots/nightly/docs/wikitext-standalone-latest.zip"/>
<property name="wikitext.url" value="http://download.eclipse.org/mylyn/drops/3.10.0/v20131025-2037/mylyn-3.10.0.v20131025-2037.zip"/>
-->
<property name="wikitext.dir" value="${download.dir}${file.separator}wikitext"/>
<!-- adolfosbh: We expect to receive a target.location to provide some jars to the xslt ant tasks
in the said target.location is not provided, we try to use the tipical ${eclipse.home} variable -->
<condition property="target.location" value="${eclipse.home}">
<not>
<isset property="target.location"/>
</not>
</condition>
<echo>Target Location: "${target.location}" </echo>
<echo>download.dir "${download.dir}" </echo>
<path id="xslt.classpath">
<pathelement path="${java.class.path}"/>
<pathelement path="${target.location}/plugins/org.apache.xalan_2.7.1.v201005080400.jar"/>
<pathelement path="${target.location}/plugins/org.apache.xml.serializer_2.7.1.v201005080400.jar"/>
<!--pathelement path="${target.location}/plugins/com.google.guava_10.0.1.v201203051515.jar"/-->
</path>
<target name="install-wikitext">
<echo>Find wikitext tasks</echo>
<!--echo>echoproperties to "${user.dir}${file.separator}install-wikitext.properties"</echo>
<echoproperties destfile="${user.dir}${file.separator}install-wikitext.properties"/-->
<taskdef resource="org/eclipse/mylyn/wikitext/ant/tasks.properties">
<classpath>
<fileset dir="${target.location}${file.separator}plugins">
<include name="com.google.guava*.jar"/>
<!--include name="org.eclipse.mylyn.wikitext.core*.jar"/-->
<include name="org.eclipse.mylyn.wikitext.ant*.jar"/>
<include name="org.eclipse.mylyn.wikitext.textile*.jar"/>
<include name="org.eclipse.mylyn.wikitext*.jar"/>
</fileset>
</classpath>
</taskdef>
</target>
<target name="assemble">
<echo>Assembling contributions to "${build.dir}${file.separator}${document.name}.textile"</echo>
<loadfile srcfile="doc/${document.name}-index.txt" property="inputfiles">
<filterchain>
<tokenfilter>
<replacestring from="\n" to=","/>
</tokenfilter>
</filterchain>
</loadfile>
<concat destfile="${build.dir}${file.separator}${document.name}.textile" append="false" fixlastline="yes">
<filelist dir="doc" files="${inputfiles}"/>
</concat>
</target>
<target name="wikitext2docbook" depends="assemble" description="Generate DocBook from Textile">
<wikitext-to-docbook markupLanguage="org.eclipse.mylyn.wikitext.textile.TextileLanguage"
booktitle="QVT Declarative Documentation"
validate="true">
<fileset dir="${build.dir}">
<include name="${document.name}.textile"/>
</fileset>
</wikitext-to-docbook>
</target>
<!--
DocBook Toolchain
-->
<!-- <property name="docbook.version" value="1.73.2" /> -->
<property name="docbook.version" value="1.75.1" />
<property name="docbook.dir" value="${download.dir}${file.separator}docbook-xsl-${docbook.version}"/>
<property name="docbookxsl.url" value="http://downloads.sourceforge.net/project/docbook/docbook-xsl/1.75.1/docbook-xsl-${docbook.version}.zip"/>
<property name="fop.dir" value="${download.dir}${file.separator}fop-0.95"/>
<property name="fop.url" value="http://archive.apache.org/dist/xmlgraphics/fop/binaries/fop-0.95-bin.zip"/>
<property name="jai.dir" value="ENTER_JAI_DIRECTORY"/>
<macrodef name="docbook2pdf">
<attribute name="source"/>
<attribute name="target"/>
<sequential>
<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
<classpath>
<pathelement location="${fop.dir}${file.separator}build${file.separator}fop.jar" />
<pathelement location="${fop.dir}${file.separator}lib${file.separator}avalon-framework-4.2.0.jar" />
<pathelement location="${fop.dir}${file.separator}lib${file.separator}commons-logging-1.0.4.jar" />
<pathelement location="${fop.dir}${file.separator}lib${file.separator}commons-io-1.3.1.jar" />
<pathelement location="${fop.dir}${file.separator}lib${file.separator}batik-all-1.7.jar" />
<pathelement location="${fop.dir}${file.separator}lib${file.separator}xmlgraphics-commons-1.3.1.jar" />
<pathelement location="${jai.dir}${file.separator}lib${file.separator}jai_core.jar" />
<pathelement location="${jai.dir}${file.separator}lib${file.separator}jai_codec.jar" />
</classpath>
</taskdef>
<fop
format="application/pdf"
fofile="@{source}"
outfile="@{target}"
messagelevel="info"/>
</sequential>
</macrodef>
<target name="init">
<mkdir dir="${download.dir}"/>
<mkdir dir="${build.dir}"/>
</target>
<target name="build-doc" depends="init, install-wikitext, get-docbook-xsl, get-fop">
<echo>Building Output...</echo>
<antcall target="wikitext2docbook"/>
<antcall target="docbook2pdf"/>
<antcall target="docbook2html"/>
<antcall target="docbook2eclipsehelp"/>
</target>
<target name="check-docbook">
<condition property="hasDocbook">
<and>
<available file="${download.dir}${file.separator}docbook.zip" property="hasDocbookZip"/>
<available file="${docbook.dir}" type="dir" property="hasDocbookDir"/>
</and>
</condition>
</target>
<target name="check-fop">
<condition property="hasFOP">
<and>
<available file="${download.dir}${file.separator}fop.zip" property="hasFOPZip"/>
<available file="${fop.dir}" type="dir" property="hasFOPDir"/>
</and>
</condition>
</target>
<target name="get-docbook-xsl" description="Downloads docbook xsl" depends="check-docbook" unless="hasDocbook">
<echo>Downloading DocBook XSL...</echo>
<get dest="${download.dir}${file.separator}docbook.zip" src="${docbookxsl.url}" usetimestamp="true" retries="5"/>
<unzip src="${download.dir}${file.separator}docbook.zip" dest="${download.dir}"/>
</target>
<target name="get-fop" description="Downloads FOP" depends="check-fop" unless="hasFOP">
<echo>Downloading FOP...</echo>
<get dest="${download.dir}${file.separator}fop.zip" src="${fop.url}" usetimestamp="true" retries="5"/>
<unzip src="${download.dir}${file.separator}fop.zip" dest="${download.dir}"/>
</target>
<target name="docbook2html">
<echo>Converting article to HTML...</echo>
<echo>XML Catalog "docbook.xsl" => "${docbook.dir}${file.separator}html${file.separator}docbook.xsl"</echo>
<delete dir="${basedir}/html"
failonerror="false"
excludes="CVS"
includeemptydirs="true"/>
<copy todir="${basedir}/html">
<fileset dir="doc/">
<include name="images/**" />
</fileset>
</copy>
<copy file="${html-css.file}" todir="${basedir}/html" />
<xslt classpathref="xslt.classpath" in="${build.dir}${file.separator}${document.name}.xml" extension="xml" out="${basedir}/html${file.separator}${document.name}.html" style="${document.stylesheet}">
<factory name="org.apache.xalan.processor.TransformerFactoryImpl">
<attribute name="http://xml.apache.org/xalan/features/optimize" value="true"/>
</factory>
<xmlcatalog>
<entity
publicId="docbook.xsl"
location="${docbook.dir}${file.separator}html${file.separator}docbook.xsl"/>
</xmlcatalog>
<param name="header.rule" expression="1" />
<param name="admon.graphics.extension" expression=".gif"/>
<param name="admon.textlabel" expression="0"/>
<param name="ulink.target" expression="_new"/>
<param name="ignore.image.scaling" expression="1"/>
</xslt>
</target>
<target name="docbook2pdf">
<echo>Converting article to "manual${file.separator}${document.name}.pdf"</echo>
<echo>XML Catalog "docbook.xsl" => "${docbook.dir}${file.separator}fo${file.separator}docbook.xsl"</echo>
<delete file="manual${file.separator}${document.name}.pdf" failonerror="false"/>
<delete file="${build.dir}${file.separator}${document.name}.fo"/>
<mkdir dir="manual"/>
<!-- HACK! images should rather be copied to build/images -->
<copy todir="${basedir}">
<fileset dir="doc/">
<include name="images/**" />
</fileset>
</copy>
<xslt classpathref="xslt.classpath" in="${build.dir}${file.separator}${document.name}.xml" extension="xml" out="${build.dir}${file.separator}${document.name}.fo" style="${document.pdf.stylesheet}">
<factory name="org.apache.xalan.processor.TransformerFactoryImpl">
<attribute name="http://xml.apache.org/xalan/features/optimize" value="true"/>
</factory>
<xmlcatalog>
<entity
publicId="docbook.xsl"
location="${docbook.dir}${file.separator}fo${file.separator}docbook.xsl"/>
</xmlcatalog>
<param name="generate.toc" expression="book toc" />
<param name="header.rule" expression="1" />
<param name="admon.graphics.extension" expression=".gif"/>
<param name="admon.textlabel" expression="0"/>
<param name="admon.graphics" expression="1"/>
</xslt>
<docbook2pdf
source="${build.dir}${file.separator}${document.name}.fo"
target="manual${file.separator}${document.name}.pdf"/>
<!-- Remove the resulting formatting object. This object isn't necessary in the
result of this build. -->
<delete file="${build.dir}${file.separator}${document.name}.fo" />
<delete dir="${basedir}/images" />
</target>
<target name="wikitext2eclipsehelp" depends="assemble" description="Generate Eclipse Help from textile">
<wikitext-to-eclipse-help markupLanguage="org.eclipse.mylyn.wikitext.textile.core.TextileLanguage"
multipleOutputFiles="true"
navigationImages="false"
formatoutput="true"
helpPrefix="help">
<fileset dir="${build.dir}">
<include name="${document.name}.textile"/>
</fileset>
<stylesheet url="book.css"/>
<stylesheet file="${basedir}/help/styles/main.css"/>
</wikitext-to-eclipse-help>
</target>
<target name="docbook2eclipsehelp">
<echo>Converting article to Eclipse Help...</echo>
<delete dir="${basedir}/help"
failonerror="false"
excludes="CVS"
includeemptydirs="true"/>
<copy todir="${basedir}/help/images">
<fileset dir="doc/images">
<include name="**/*" />
</fileset>
</copy>
<copy file="${eclipsehelp-css.file}" todir="${basedir}/help" />
<xslt classpathref="xslt.classpath" basedir="${build.dir}" destdir="${basedir}" style="${document.eclipse.stylesheet}">
<param name="chunk.quietly" expression="1"/>
<include name="qvtd.xml"/>
<factory name="org.apache.xalan.processor.TransformerFactoryImpl">
<attribute name="http://xml.apache.org/xalan/features/optimize" value="true"/>
</factory>
<xmlcatalog>
<entity
publicId="chunk.xsl"
location="${docbook.dir}${file.separator}html${file.separator}chunk.xsl"/>
</xmlcatalog>
<param name="header.rule" expression="1" />
<param name="ignore.image.scaling" expression="1" />
</xslt>
<delete file="${basedir}/qvtd.html" />
</target>
</project>