diff options
author | Aidan Skinner <aidan@apache.org> | 2008-07-25 11:18:20 +0000 |
---|---|---|
committer | Aidan Skinner <aidan@apache.org> | 2008-07-25 11:18:20 +0000 |
commit | c063c7b4a350ce64abb4075b28b0de16fd5ec71c (patch) | |
tree | 3f309c68d03230b99c7f96903b1c648c8c2b5a5c /review | |
parent | 6ba559ba6bdf0bfd15a23dc60367f0fa0077b5a6 (diff) | |
download | qpid-python-c063c7b4a350ce64abb4075b28b0de16fd5ec71c.tar.gz |
Add xslt magic for creating code review agenda, and add wrapper script
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@679762 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'review')
-rwxr-xr-x | review/agenda.py | 65 | ||||
-rw-r--r-- | review/jiraRSS2wiki.xsl | 17 | ||||
-rw-r--r-- | review/svnlog2wiki.xsl | 11 |
3 files changed, 93 insertions, 0 deletions
diff --git a/review/agenda.py b/review/agenda.py new file mode 100755 index 0000000000..fbc3581c9f --- /dev/null +++ b/review/agenda.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +# +# +# 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. + +import sys, re +from popen2 import popen2, popen3 +from optparse import OptionParser + +prereqs = ["tr", "svn", "xsltproc", "sed", "grep", "wget"] + +svncmd = "svn log https://svn.apache.org/repos/asf/incubator/qpid --xml -r %s:HEAD | tr '\n\r|' ' -' | xsltproc svnlog2wiki.xsl - | grep r | sed -e 's/^ *//' | sed -e 's/\(QPID-[0-9]*\)/\[\1 | https:\/\/issues.apache.org\/jira\/browse\/\1 \]/g'" + +jiracmd = "wget -q -O - http://issues.apache.org/jira/sr/jira.issueviews:searchrequest-xml/12312564/SearchRequest-12312564.xml?tempMax=1000 | tr '[]|' '()-' | xsltproc jiraRSS2wiki.xsl - | grep '|' | sed -e 's/^ *//'" + + +def get_commits(revision): + (stdout, stdin) = popen2(svncmd % revision) + return stdout.read() + +def get_jiras(): + (stdout, stdin) = popen2(jiracmd) + return stdout.read() + +def main(): + parser = OptionParser() + parser.add_option("-r", "--revision", dest="revision", action="store", + type="string", + help="The first revision to generate logs for") + + (options, args) = parser.parse_args() + + # Check that we have what's necessary + + notfound = re.compile('^which') + for cmd in prereqs: + (stdout, stdin, stderr) = popen3('which %s' % cmd) + if (notfound.match(stderr.read())): + parser.error ("Could not find command %s, try [apt-get|yum] install %s" % + (cmd, cmd)) + + if (options.revision == None): + parser.error("svn revision must be specified") + + print(get_commits(options.revision)) + print "=== Jiras===" + print(get_jiras()) + +if __name__ == "__main__": + main() diff --git a/review/jiraRSS2wiki.xsl b/review/jiraRSS2wiki.xsl new file mode 100644 index 0000000000..6ebc86d0de --- /dev/null +++ b/review/jiraRSS2wiki.xsl @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + <xsl:output method="text"></xsl:output> + <xsl:template match="/"> + || Key || Component(s) || Affects Version/s|| Summary || Status || Assignee || Reporter || Review Comments || + <xsl:apply-templates select="rss/channel/item"></xsl:apply-templates> + </xsl:template> + <xsl:template match="item"> + | [<xsl:value-of select="key"/> | <![CDATA[https://issues.apache.org/jira/browse/]]><xsl:value-of select="key"/> ] | <xsl:apply-templates select="component"/> | <xsl:apply-templates select="version"/> | <xsl:value-of select="title"/> | <xsl:value-of select="status"/> | <xsl:value-of select="assignee"/> | <xsl:value-of select="reporter"/> | | + </xsl:template> + <xsl:template match="component"> +<xsl:value-of select="."/><xsl:if test="following-sibling::node()[name() = 'component']">, </xsl:if> + </xsl:template> + <xsl:template match="version"> + <xsl:value-of select="."/><xsl:if test="following-sibling::node()[name() = 'version']">, </xsl:if> + </xsl:template> +</xsl:stylesheet> diff --git a/review/svnlog2wiki.xsl b/review/svnlog2wiki.xsl new file mode 100644 index 0000000000..2905abc33b --- /dev/null +++ b/review/svnlog2wiki.xsl @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + <xsl:output method="text"></xsl:output> + <xsl:template match="/"> +|| revision || committer || date || comment || || +<xsl:apply-templates select="log/logentry"></xsl:apply-templates> + </xsl:template> + <xsl:template match="logentry"> + | [r<xsl:value-of select="@revision"/> | <![CDATA[http://svn.apache.org/viewvc/?view=rev&revision=]]><xsl:value-of select="@revision"/> ] | <xsl:value-of select="author"/> | <xsl:value-of select="substring( date, 1, 10 )"/> | <xsl:value-of select="substring(msg, 1, 200)"/><xsl:if test="string-length( msg ) > 200"> ... </xsl:if> | | + </xsl:template> +</xsl:stylesheet> |