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>