summaryrefslogtreecommitdiff
path: root/qpid/review/changeLogToWiki.py
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/review/changeLogToWiki.py')
-rwxr-xr-xqpid/review/changeLogToWiki.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/qpid/review/changeLogToWiki.py b/qpid/review/changeLogToWiki.py
new file mode 100755
index 0000000000..4054b135df
--- /dev/null
+++ b/qpid/review/changeLogToWiki.py
@@ -0,0 +1,85 @@
+#!/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"]
+
+apacheSVN="https://svn.apache.org/repos/asf/qpid/trunk/qpid/java"
+
+svncmd = "svn log %s --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'"
+
+
+def get_commits(revision):
+ (stdout, stdin) = popen2(svncmd % (options.repo,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 main():
+ global options
+ parser = OptionParser()
+ parser.add_option("-r", "--revision", dest="revision", action="store",
+ type="string",
+ help="The first revision to generate logs for")
+
+ parser.add_option("-s", "--svn-repo", dest="repo", action="store",
+ default=apacheSVN,
+ type="string",
+ help="Provide a svn repository to process")
+
+
+ (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))
+
+if __name__ == "__main__":
+ main()