Create release notes starting from the previous non-beta non-RC release

This commit is contained in:
Jack Grigg
2017-12-20 23:39:39 +00:00
parent 1683c2d5bf
commit 2b38d11eda
2 changed files with 69 additions and 18 deletions

View File

@@ -26,6 +26,7 @@ def main(args=sys.argv[1:]):
main_logged(
opts.RELEASE_VERSION,
opts.RELEASE_PREV,
opts.RELEASE_FROM,
opts.RELEASE_HEIGHT,
opts.HOTFIX,
)
@@ -61,6 +62,11 @@ def parse_args(args):
type=Version.parse_arg,
help='The previously released version.',
)
p.add_argument(
'RELEASE_FROM',
type=Version.parse_arg,
help='The previously released non-beta non-RC version. May be the same as RELEASE_PREV.',
)
p.add_argument(
'RELEASE_HEIGHT',
type=int,
@@ -70,8 +76,8 @@ def parse_args(args):
# Top-level flow:
def main_logged(release, releaseprev, releaseheight, hotfix):
verify_releaseprev_tag(releaseprev)
def main_logged(release, releaseprev, releasefrom, releaseheight, hotfix):
verify_tags(releaseprev, releasefrom)
verify_version(release, releaseprev, hotfix)
initialize_git(release, hotfix)
patch_version_in_files(release, releaseprev)
@@ -82,7 +88,7 @@ def main_logged(release, releaseprev, releaseheight, hotfix):
gen_manpages()
commit('Updated manpages for {}.'.format(release.novtext))
gen_release_notes(release)
gen_release_notes(release, releasefrom)
update_debian_changelog(release)
commit(
'Updated release notes and changelog for {}.'.format(
@@ -101,8 +107,8 @@ def phase(message):
return deco
@phase('Checking RELEASE_PREV tag.')
def verify_releaseprev_tag(releaseprev):
@phase('Checking tags.')
def verify_tags(releaseprev, releasefrom):
candidates = []
# Any tag beginning with a 'v' followed by [1-9] must be a version
@@ -130,6 +136,31 @@ def verify_releaseprev_tag(releaseprev):
),
)
candidates.reverse()
prev_tags = []
for candidate in candidates:
if releasefrom == candidate:
break
else:
prev_tags.append(candidate)
else:
raise SystemExit(
'{} does not appear in `git tag --list`'
.format(
releasefrom.vtext,
),
)
for tag in prev_tags:
if not tag.betarc:
raise SystemExit(
'{} appears to be a more recent non-beta non-RC release than {}'
.format(
tag.vtext,
releasefrom.vtext,
),
)
@phase('Checking version.')
def verify_version(release, releaseprev, hotfix):
@@ -238,8 +269,18 @@ def gen_manpages():
@phase('Generating release notes.')
def gen_release_notes(release):
sh_log('python', './zcutil/release-notes.py', '--version', release.novtext)
def gen_release_notes(release, releasefrom):
release_notes = [
'python',
'./zcutil/release-notes.py',
'--version',
release.novtext,
'--prev',
releasefrom.vtext,
]
if not release.betarc:
release_notes.append('--clear')
sh_log(*release_notes)
sh_log(
'git',
'add',