diff options
Diffstat (limited to 'release.py')
-rw-r--r-- | release.py | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/release.py b/release.py deleted file mode 100644 index 2556d50..0000000 --- a/release.py +++ /dev/null @@ -1,92 +0,0 @@ -import re -from glob import glob -from os.path import join -from subprocess import call - -import blurb as blurb_module -from argparse import ArgumentParser -from mock import version_info - -VERSION_TYPES = ['major', 'minor', 'bugfix'] - - -def incremented_version(version_info, type_): - type_index = VERSION_TYPES.index(type_) - version_info = tuple(e+(1 if i==type_index else 0) - for i, e in enumerate(version_info)) - return '.'.join(str(p) for p in version_info) - - -def text_from_news(): - # hack: - blurb_module.sections.append('NEWS.d') - - blurbs = blurb_module.Blurbs() - for path in glob(join('NEWS.d', '*')): - blurbs.load_next(path) - - text = [] - for metadata, body in blurbs: - bpo = metadata['bpo'] - body = f"- Issue #{bpo}: " + body - text.append(blurb_module.textwrap_body(body, subsequent_indent=' ')) - - return '\n'.join(text) - - -def news_to_changelog(version): - with open('CHANGELOG.rst') as source: - current_changelog = source.read() - - text = [version] - text.append('-'*len(version)) - text.append('') - text.append(text_from_news()) - text.append(current_changelog) - - new_changelog = '\n'.join(text) - with open('CHANGELOG.rst', 'w') as target: - target.write(new_changelog) - - -def update_version(new_version): - path = join('mock', 'mock.py') - with open(path) as source: - text = source.read() - - text = re.sub("(__version__ = ')[^']+(')", - r"\g<1>"+new_version+r"\2", - text) - - with open(path, 'w') as target: - target.write(text) - - -def git(command): - return call('git '+command, shell=True) - - -def git_commit(new_version): - git('rm NEWS.d/*') - git('add CHANGELOG.rst') - git('add mock/mock.py') - git(f'commit -m "Preparing for {new_version} release."') - - -def parse_args(): - parser = ArgumentParser() - parser.add_argument('type', choices=VERSION_TYPES) - return parser.parse_args() - - -def main(): - args = parse_args() - new_version = incremented_version(version_info, args.type) - news_to_changelog(new_version) - update_version(new_version) - git_commit(new_version) - print(f'{new_version} ready to push, please check the HEAD commit first!') - - -if __name__ == '__main__': - main() |