diff options
Diffstat (limited to 'qpid/review/agenda.py')
-rwxr-xr-x | qpid/review/agenda.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/qpid/review/agenda.py b/qpid/review/agenda.py new file mode 100755 index 0000000000..6ad20362cb --- /dev/null +++ b/qpid/review/agenda.py @@ -0,0 +1,84 @@ +#!/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 +from xml.dom.minidom import parse, parseString + +prereqs = ["tr", "svn", "xsltproc", "sed", "grep", "wget"] + +svncmd = "svn log https://svn.apache.org/repos/asf/qpid/trunk/qpid/java --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 add_jira_status(stdout.read()) + +def add_jira_status(commits): + commit_lines = commits.split("\n") + new_commits = [] + for commit in commit_lines: + if re.match(".*https://issues.apache.org/.*", commit): + jira = re.findall("QPID-[0-9]*", commit)[0] + jira_xml_url = "http://issues.apache.org/jira/si/jira.issueviews:issue-xml/%s/%s.xml" % (jira, jira) + (stdout, stdin) = popen2("wget -q -O - %s" % jira_xml_url) + + jira_dom = parse(stdout) + status = jira_dom.getElementsByTagName("status")[0] + new_commits.append("%s %s | " % (commit, status.lastChild.data)) + else: + new_commits.append(commit) + + return "\n".join(new_commits) + + +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 "h2. Jiras" + print(get_jiras()) + +if __name__ == "__main__": + main() |