From e3f6f6ddc90e5cd1c3c60a95365705ab9ff84190 Mon Sep 17 00:00:00 2001 From: lovetox Date: Wed, 27 Jul 2022 09:55:49 +0200 Subject: chore: Add bump_version.py --- scripts/bump_version.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 scripts/bump_version.py (limited to 'scripts') diff --git a/scripts/bump_version.py b/scripts/bump_version.py new file mode 100755 index 0000000..54192ce --- /dev/null +++ b/scripts/bump_version.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 + +import re +import argparse +from pathlib import Path +import subprocess + +REPO_DIR = Path(__file__).resolve().parent.parent + + +INIT = REPO_DIR / 'nbxmpp' / '__init__.py' +CFG = REPO_DIR / 'setup.cfg' +CHANGELOG = REPO_DIR / 'ChangeLog' + +VERSION_RX = r'\d+\.\d+\.\d+' + + +def get_current_version() -> str: + content = INIT.read_text(encoding='utf8') + match = re.search(VERSION_RX, content) + if match is None: + exit('Unable to find current version') + return match[0] + + +def bump_version(current_version: str, new_version: str) -> None: + content = INIT.read_text(encoding='utf8') + content = content.replace(current_version, new_version, 1) + INIT.write_text(content, encoding='utf8') + + content = CFG.read_text(encoding='utf8') + content = content.replace(current_version, new_version, 1) + CFG.write_text(content, encoding='utf8') + + +def make_changelog(new_version: str) -> None: + + cmd = [ + 'git-chglog', + '--next-tag', + new_version + ] + + result = subprocess.run(cmd, + cwd=REPO_DIR, + text=True, + check=True, + capture_output=True) + + changes = result.stdout + changes = changes.removeprefix('\n') + + current_changelog = CHANGELOG.read_text() + + with CHANGELOG.open('w') as f: + f.write(changes + current_changelog) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Bump Version') + parser.add_argument('version', help='The new version, e.g. 1.5.0') + args = parser.parse_args() + + current_version = get_current_version() + + bump_version(current_version, args.version) + make_changelog(args.version) -- cgit v1.2.3