From 57374a1fabcbe3dbecbbe7dae3b167ef582e0c50 Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Sat, 26 Apr 2014 08:34:24 +0100 Subject: [PATCH] Added ability for releaseNotes script to pull github issue titles --- scripts/releaseNotes.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/scripts/releaseNotes.py b/scripts/releaseNotes.py index 5eb56ade..e083ec94 100644 --- a/scripts/releaseNotes.py +++ b/scripts/releaseNotes.py @@ -1,8 +1,13 @@ import os +import re +import urllib2 +import json from scriptCommon import catchPath from scriptCommon import runAndCapture +issueNumberRe = re.compile( r'(.*?)#([0-9]*)([^0-9]?.*)' ) + rootPath = os.path.join( catchPath, 'include/' ) versionPath = os.path.join( rootPath, "internal/catch_version.hpp" ) @@ -13,6 +18,20 @@ lines = runAndCapture( ['git', 'log', hashes[1] + ".." + hashes[0], catchPath] ) prevLine = "" messages = [] dates = [] +issues = {} + +def getIssueTitle( issueNumber ): + try: + s = urllib2.urlopen("https://api.github.com/repos/philsquared/catch/issues/" + issueNumber ).read() + except e: + return "#HTTP Error#" + + try: + j = json.loads( s ) + return j["title"] + except e: + return "#JSON Error#" + for line in lines: if line.startswith( "commit"): pass @@ -24,8 +43,18 @@ for line in lines: elif line == "" and prevLine == "": pass else: - messages.append( line ) prevLine = line + match = issueNumberRe.match( line ) + line2 = "" + while match: + issueNumber = match.group(2) + issue = '#{0} ("{1}")'.format( issueNumber, getIssueTitle( issueNumber ) ) + line2 = line2 + match.group(1) + issue + match = issueNumberRe.match( match.group(3) ) + if line2 == "": + messages.append( line ) + else: + messages.append( line2 ) print "All changes between {0} and {1}:\n".format( dates[-1], dates[0] )