diff options
author | David Lord <davidism@gmail.com> | 2017-11-01 07:57:12 -0700 |
---|---|---|
committer | David Lord <davidism@gmail.com> | 2017-11-08 10:53:47 -0800 |
commit | d9d3fc32f0b7584af5c371639bc7882449bb6f6d (patch) | |
tree | 1e3a7beaddef0d289de87b8fed084b651eb7be4d /scripts | |
parent | 072cdf97fa2899efe1d12715edf19706b6425fb5 (diff) | |
download | jinja2-d9d3fc32f0b7584af5c371639bc7882449bb6f6d.tar.gz |
clean up MANIFEST.in
clean up make-release.py for py3
add rst extension to CHANGES for GitHub
clean up changelog formatting
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/make-release.py | 76 |
1 files changed, 46 insertions, 30 deletions
diff --git a/scripts/make-release.py b/scripts/make-release.py index 6ea7162..51c3700 100644 --- a/scripts/make-release.py +++ b/scripts/make-release.py @@ -10,39 +10,42 @@ :copyright: (c) 2011 by Armin Ronacher. :license: BSD, see LICENSE for more details. """ -import sys +from __future__ import print_function + import os import re -from datetime import datetime, date -from subprocess import Popen, PIPE - -try: - import wheel -except ImportError: - wheel = None +import sys +from datetime import date, datetime +from subprocess import PIPE, Popen _date_strip_re = re.compile(r'(?<=\d)(st|nd|rd|th)') def parse_changelog(): - with open('CHANGES') as f: + with open('CHANGES.rst') as f: lineiter = iter(f) for line in lineiter: match = re.search('^Version\s+(.*)', line.strip()) + if match is None: continue - length = len(match.group(1)) + version = match.group(1).strip() - if lineiter.next().count('-') != len(match.group(0)): + + if next(lineiter).count('-') != len(match.group(0)): continue + while 1: - change_info = lineiter.next().strip() + change_info = next(lineiter).strip() + if change_info: break - match = re.search(r'(?:codename (.*),\s*)?' - r'released on (\w+\s+\d+\w+\s+\d+)(?i)', - change_info) + match = re.search( + r'(?:codename (.*),\s*)?released on (\w+\s+\d+\w+\s+\d+)(?i)', + change_info + ) + if match is None: continue @@ -52,9 +55,10 @@ def parse_changelog(): def bump_version(version): try: - parts = map(int, version.split('.')) + parts = [int(i) for i in version.split('.')] except ValueError: fail('Current version is not numeric') + parts[-1] += 1 return '.'.join(map(str, parts)) @@ -66,13 +70,17 @@ def parse_date(string): def set_filename_version(filename, version_number, pattern): changed = [] + def inject_version(match): before, old, after = match.groups() changed.append(True) return before + version_number + after + with open(filename) as f: - contents = re.sub(r"^(\s*%s\s*=\s*')(.+?)(')(?sm)" % pattern, - inject_version, f.read()) + contents = re.sub( + r"^(\s*%s\s*=\s*')(.+?)(')(?sm)" % pattern, + inject_version, f.read() + ) if not changed: fail('Could not find %s in %s', pattern, filename) @@ -92,23 +100,23 @@ def set_setup_version(version): def build_and_upload(): - cmd = [sys.executable, 'setup.py', 'sdist', 'bdist_wheel', 'upload'] - if wheel is not None: - cmd.insert(4, 'bdist_wheel') + cmd = [sys.executable, 'setup.py', 'sdist', 'bdist_wheel'] Popen(cmd).wait() def fail(message, *args): - print >> sys.stderr, 'Error:', message % args + print('Error:', message % args, file=sys.stderr) sys.exit(1) def info(message, *args): - print >> sys.stderr, message % args + print(message % args, file=sys.stderr) def get_git_tags(): - return set(Popen(['git', 'tag'], stdout=PIPE).communicate()[0].splitlines()) + return set( + Popen(['git', 'tag'], stdout=PIPE).communicate()[0].splitlines() + ) def git_is_clean(): @@ -129,27 +137,35 @@ def main(): os.chdir(os.path.join(os.path.dirname(__file__), '..')) rv = parse_changelog() + if rv is None: fail('Could not parse changelog') version, release_date, codename = rv dev_version = bump_version(version) + '.dev' - info('Releasing %s (codename %s, release date %s)', - version, codename, release_date.strftime('%d/%m/%Y')) + info( + 'Releasing %s (codename %s, release date %s)', + version, codename, release_date.strftime('%d/%m/%Y') + ) tags = get_git_tags() if version in tags: fail('Version "%s" is already tagged', version) + if release_date.date() != date.today(): - fail('Release date is not today (%s != %s)', release_date.date(), date.today()) + fail( + 'Release date is not today (%s != %s)', + release_date.date(), date.today() + ) if not git_is_clean(): fail('You have uncommitted changes in git') - if wheel is None: - print ('Warning: You need to install the wheel package ' - 'to upload a wheel distribution.') + try: + import wheel + except ImportError: + fail('You need to install the wheel package.') set_init_version(version) set_setup_version(version) |