|
|
@ -83,11 +83,14 @@ def document_authors(): |
|
|
|
f.write("{0} ({1})\n".format(n, c)) |
|
|
|
|
|
|
|
## Writes release note to ./doc/release-notes based on git shortlog when current version number is specified |
|
|
|
def generate_release_note(version, filename): |
|
|
|
def generate_release_note(version, filename, prev, clear): |
|
|
|
print "Automatically generating release notes for {0} from git shortlog. Should review {1} for accuracy.".format(version, filename) |
|
|
|
# fetches latest tags, so that latest_tag will be correct |
|
|
|
subprocess.Popen(['git fetch -t'], shell=True, stdout=subprocess.PIPE).communicate()[0] |
|
|
|
latest_tag = subprocess.Popen(['git describe --abbrev=0'], shell=True, stdout=subprocess.PIPE).communicate()[0].strip() |
|
|
|
if prev: |
|
|
|
latest_tag = prev |
|
|
|
else: |
|
|
|
# fetches latest tags, so that latest_tag will be correct |
|
|
|
subprocess.Popen(['git fetch -t'], shell=True, stdout=subprocess.PIPE).communicate()[0] |
|
|
|
latest_tag = subprocess.Popen(['git describe --abbrev=0'], shell=True, stdout=subprocess.PIPE).communicate()[0].strip() |
|
|
|
print "Previous release tag: ", latest_tag |
|
|
|
notes = subprocess.Popen(['git shortlog --no-merges {0}..HEAD'.format(latest_tag)], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0] |
|
|
|
lines = notes.split('\n') |
|
|
@ -105,25 +108,32 @@ def generate_release_note(version, filename): |
|
|
|
f.writelines(notable_changes) |
|
|
|
f.writelines(RELEASE_NOTES_CHANGELOG_HEADING) |
|
|
|
f.writelines('\n'.join(lines)) |
|
|
|
# Clear temporary release notes file |
|
|
|
with open(temp_release_note, 'w') as f: |
|
|
|
f.writelines(TEMP_RELEASE_NOTES_HEADER) |
|
|
|
if clear: |
|
|
|
# Clear temporary release notes file |
|
|
|
with open(temp_release_note, 'w') as f: |
|
|
|
f.writelines(TEMP_RELEASE_NOTES_HEADER) |
|
|
|
|
|
|
|
def main(version, filename): |
|
|
|
def main(version, filename, prev, clear): |
|
|
|
if version != None: |
|
|
|
generate_release_note(version, filename) |
|
|
|
generate_release_note(version, filename, prev, clear) |
|
|
|
document_authors() |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
parser = argparse.ArgumentParser() |
|
|
|
parser.add_argument('--version') |
|
|
|
parser.add_argument('--version', help='Upcoming version, without leading v') |
|
|
|
parser.add_argument('--prev', help='Previous version, with leading v') |
|
|
|
parser.add_argument('--clear', help='Wipe doc/release-notes.md', action='store_true') |
|
|
|
args = parser.parse_args() |
|
|
|
|
|
|
|
root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) |
|
|
|
doc_dir = os.path.join(root_dir, 'doc') |
|
|
|
version = None |
|
|
|
filename = None |
|
|
|
prev = None |
|
|
|
clear = False |
|
|
|
if args.version: |
|
|
|
version = args.version |
|
|
|
filename = 'release-notes-{0}.md'.format(version) |
|
|
|
main(version, filename) |
|
|
|
prev = args.prev |
|
|
|
clear = args.clear |
|
|
|
main(version, filename, prev, clear) |
|
|
|