From 18845dab7f2001264c82c31ad0162a07290ddcfd Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Fri, 25 Apr 2014 06:10:50 +0100 Subject: [PATCH] =?UTF-8?q?Added=20script=20to=20extract=20stub=20for=20?= =?UTF-8?q?=E2=80=9Crelease=20notes=E2=80=9D=20-=20gets=20last=20two=20com?= =?UTF-8?q?mit=20hashes=20for=20the=20version=20file,=20gets=20the=20commi?= =?UTF-8?q?t=20logs=20between=20those=20versions=20and=20parses=20out=20th?= =?UTF-8?q?e=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/releaseNotes.py | 33 +++++++++++++++++++++++++++++++++ scripts/scriptCommon.py | 19 ++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 scripts/releaseNotes.py diff --git a/scripts/releaseNotes.py b/scripts/releaseNotes.py new file mode 100644 index 00000000..5eb56ade --- /dev/null +++ b/scripts/releaseNotes.py @@ -0,0 +1,33 @@ +import os + +from scriptCommon import catchPath +from scriptCommon import runAndCapture + +rootPath = os.path.join( catchPath, 'include/' ) +versionPath = os.path.join( rootPath, "internal/catch_version.hpp" ) + + +hashes = runAndCapture( ['git', 'log', '-2', '--format="%H"', versionPath] ) +lines = runAndCapture( ['git', 'log', hashes[1] + ".." + hashes[0], catchPath] ) + +prevLine = "" +messages = [] +dates = [] +for line in lines: + if line.startswith( "commit"): + pass + elif line.startswith( "Author:"): + pass + elif line.startswith( "Date:"): + dates.append( line[5:].lstrip() ) + pass + elif line == "" and prevLine == "": + pass + else: + messages.append( line ) + prevLine = line + +print "All changes between {0} and {1}:\n".format( dates[-1], dates[0] ) + +for line in messages: + print line diff --git a/scripts/scriptCommon.py b/scripts/scriptCommon.py index 5710ba9c..6ac381ad 100644 --- a/scripts/scriptCommon.py +++ b/scripts/scriptCommon.py @@ -1,4 +1,21 @@ import os import sys +import subprocess -catchPath = os.path.dirname(os.path.realpath( os.path.dirname(sys.argv[0]))) \ No newline at end of file +catchPath = os.path.dirname(os.path.realpath( os.path.dirname(sys.argv[0]))) + +def runAndCapture( args ): + child = subprocess.Popen(" ".join( args ), shell=True, stdout=subprocess.PIPE) + lines = [] + line = "" + while True: + out = child.stdout.read(1) + if out == '' and child.poll() != None: + break + if out != '': + if out == '\n': + lines.append( line ) + line = "" + else: + line = line + out + return lines \ No newline at end of file