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