You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@forrest.apache.org by st...@apache.org on 2002/07/22 19:15:09 UTC
cvs commit: xml-forrest/src/resources/forrestbot/xslt config2defaults.xsl config2work.xsl
stevenn 2002/07/22 10:15:09
Added: . forrestbot.xconf
src/resources/forrestbot stages.conf.xml
src/resources/forrestbot/ant templates.build.xml
src/resources/forrestbot/xslt config2defaults.xsl
config2work.xsl
Log:
very rough first try at remote project building
Revision Changes Path
1.1 xml-forrest/forrestbot.xconf
Index: forrestbot.xconf
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- DTD will be added once the remote build process
has been finished and debugged
<!DOCTYPE forrest-config SYSTEM "forrest-config.dtd">
-->
<forrest-config>
<defaults>
<get-src type="cvs">
<host name="cvs.apache.org"/>
<root name="/home/cvspublic"/>
<user name="anoncvs"/>
<passwd name="anoncvs"/>
</get-src>
<deploy type="scp">
<host name="krysalis.sourceforge.net"/>
<root name="/home/groups/k/kr/krysalis/htdocs"/>
<user name="forrestbot"/>
</deploy>
<generate>
<skin name="forrest-site"/>
<debuglevel name="ERROR" />
</generate>
</defaults>
<project name="xml-forrest">
<get-src type="cvs">
<module name="xml-forrest"/>
<dir name="src/documentation"/>
</get-src>
<generate>
<skin name="mpo-test" />
</generate>
<deploy type="scp">
<dir name="forrest"/>
</deploy>
</project>
</forrest-config>
1.1 xml-forrest/src/resources/forrestbot/stages.conf.xml
Index: stages.conf.xml
===================================================================
<?xml version="1.0"?>
<stages>
<workstage name="prepare"/>
<workstage name="get-src"/>
<workstage name="generate"/>
<workstage name="deploy"/>
<workstage name="cleanup"/>
</stages>
1.1 xml-forrest/src/resources/forrestbot/ant/templates.build.xml
Index: templates.build.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<project default="none" name="forrestbot-templates">
<!-- Some defaults that typically get set befor the template targets get called -->
<property name="bot.build.dir" value="build" />
<property name="project.name" value="xml-forrest" />
<property name="template.echo" value="false" />
<!-- Todo: cleanup the implicit dependency on being called from the�
main ant script -->
<target name="template.prepare">
<echo message="prepare workstage for project ${project.name}"/>
<delete dir="${bot.build.dir}/${project.name}"/>
<mkdir dir="${bot.build.dir}/${project.name}/src"/>
</target>
<target name="echo.get-src.cvs" if="template.echo">
<echo message="get-src workstage of type CVS for project ${project.name}"/>
<echo message="cvs login: usr= ${get-src.cvs.user} / pwd= ${get-src.cvs.passwd}"/>
<echo message="cvs update from host: ${get-src.cvs.host} with root: ${get-src.cvs.root}"/>
<echo message="cvs update for module: ${get-src.cvs.module} to dir: ${get-src.cvs.dir}"/>
</target>
<target name="template.get-src.cvs" depends="echo.get-src.cvs">
<cvspass cvsroot=":pserver:${get-src.cvs.user}@${get-src.cvs.host}:${get-src.cvs.root}"
password="${get-src.cvs.passwd}"
/>
<cvs cvsRoot=":pserver:${get-src.cvs.user}@${get-src.cvs.host}:${get-src.cvs.root}"
package="${get-src.cvs.module}/${get-src.cvs.dir}"
dest="${bot.build.dir}/${project.name}/src"
quiet="false"
>
<commandline>
<argument line="checkout -P"/>
</commandline>
</cvs>
</target>
<target name="echo.generate" if="template.echo">
<property name="classpath-dump" refid="forrest.cp"/>
<echo message="generate workstage for project ${project.name}"/>
<echo message="using cocoon in dir ${bot.build.dir}/${project.name}/src"/>
<echo message="at debug level = ${generate.debuglevel}"/>
<echo message="looking for java classes in ${classpath-dump}"/>
</target>
<target name="template.generate" depends="echo.generate">
<java classname="org.apache.cocoon.Main" fork="true"
dir="${bot.build.dir}/${project.name}/src" failonerror="true"
classpathref="forrest.cp">
<arg value="-c."/>
<arg value="-d../docs"/>
<arg value="-w../work"/>
<arg value="-l../work/cocoon.log"/>
<arg value="-u${generate.debuglevel}"/>
<arg value="index.html"/>
</java>
</target>
<target name="template.deploy.scp">
<echo message="deploy workstage of type scp for project ${project.name}"/>
</target>
<target name="template.cleanup">
<echo message="cleanup workstage for project ${project.name}"/>
</target>
</project>
1.1 xml-forrest/src/resources/forrestbot/xslt/config2defaults.xsl
Index: config2defaults.xsl
===================================================================
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="defaults">
<wortel>
<xsl:for-each select="*">
<xsl:variable name="elementname">
<xsl:value-of select="name()"/>
<xsl:if test="@type">
<xsl:text>.</xsl:text>
<xsl:value-of select="@type"/>
</xsl:if>
</xsl:variable>
<xsl:element name="{$elementname}">
<xsl:for-each select="*">
<xsl:element name="{name()}">
<xsl:value-of select="@name"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</wortel>
</xsl:template>
</xsl:stylesheet>
1.1 xml-forrest/src/resources/forrestbot/xslt/config2work.xsl
Index: config2work.xsl
===================================================================
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
exclude-result-prefixes="xalan">
<xsl:output indent="yes"/>
<xsl:variable name="workstages" select="xalan:nodeset(document('../stages.conf.xml'))"/>
<xsl:template match="forrest-config">
<project basedir="." default="work" name="generated forrestbot build file">
<xsl:call-template name="listprojects"/>
<xsl:call-template name="startproject"/>
<xsl:call-template name="liststagesperproject"/>
</project>
</xsl:template>
<xsl:template name="listprojects">
<target name="work">
<parallel>
<xsl:for-each select="project">
<antcall inheritRefs="true" target="work.{@name}"/>
</xsl:for-each>
</parallel>
</target>
</xsl:template>
<xsl:template name="startproject">
<xsl:for-each select="project">
<xsl:variable name="project.name" select="@name"/>
<target name="work.{@name}">
<xsl:attribute name="depends">
<xsl:for-each select="$workstages/stages/workstage">
<xsl:value-of select="concat(@name, '.', $project.name)"/>
<xsl:if test="not(position() = last())">,</xsl:if>
</xsl:for-each>
</xsl:attribute>
</target>
</xsl:for-each>
</xsl:template>
<xsl:template name="liststagesperproject">
<xsl:for-each select="/forrest-config/project">
<xsl:variable name="projectnode" select="."/>
<xsl:for-each select="$workstages/stages/workstage">
<xsl:variable name="workstagenode" select="."/>
<target name="{$workstagenode/@name}.{$projectnode/@name}">
<xsl:if test="preceding::workstage[1]">
<xsl:attribute name="depends">
<xsl:value-of select="concat(preceding::workstage[1]/@name,'.',$projectnode/@name)"/>
</xsl:attribute>
</xsl:if>
<xsl:call-template name="insertprojectnodeprops">
<xsl:with-param name="projectnode" select="$projectnode"/>
</xsl:call-template>
<xmlproperty file="${{bot.default.parameters.xml}}" keepRoot="false"/>
<xsl:call-template name="insertantcalltotemplate">
<xsl:with-param name="projectnode" select="$projectnode"/>
<xsl:with-param name="workstagenode" select="$workstagenode"/>
</xsl:call-template>
</target>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="insertprojectnodeprops">
<xsl:param name="projectnode"/>
<xsl:for-each select="$projectnode/*/*">
<property>
<xsl:attribute name="name">
<xsl:value-of select="name(..)"/>
<xsl:if test="../@type">.<xsl:value-of select="../@type"/></xsl:if>
<xsl:text>.</xsl:text>
<xsl:value-of select="name()"/>
</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="@name"/>
</xsl:attribute>
</property>
</xsl:for-each>
</xsl:template>
<xsl:template name="insertantcalltotemplate">
<xsl:param name="workstagenode"/>
<xsl:param name="projectnode"/>
<ant antfile="${{bot.templates.build.xml}}" inheritRefs="true">
<xsl:attribute name="target">
<xsl:text>template.</xsl:text>
<xsl:value-of select="$workstagenode/@name"/>
<xsl:if test="$projectnode/*[name()=$workstagenode/@name][@type]">
<xsl:text>.</xsl:text>
<xsl:value-of select="$projectnode/*[name()=$workstagenode/@name]/@type"/>
</xsl:if>
</xsl:attribute>
<property name="project.name" value="{$projectnode/@name}"/>
</ant>
</xsl:template>
</xsl:stylesheet>