summaryrefslogtreecommitdiff
path: root/release.py
diff options
context:
space:
mode:
Diffstat (limited to 'release.py')
-rw-r--r--release.py92
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()