diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2019-12-22 12:37:15 -0700 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2019-12-22 14:55:23 -0700 |
commit | 483f570694d8bed245ce5391515ba4ee1a0202da (patch) | |
tree | 9d928cf269a15ed7c698fde64bf8f3edb04107ca /pavement.py | |
parent | 0ed32251e0b67002a0f6da894db2080f4ecdd4e1 (diff) | |
download | numpy-483f570694d8bed245ce5391515ba4ee1a0202da.tar.gz |
MAINT: Update pavement.py for towncrier.
The update is needed so that the links generated by towncrier are
converted in the README.md file generated for the github release
documentation. The code is also simplified.
[skip ci]
Diffstat (limited to 'pavement.py')
-rw-r--r-- | pavement.py | 60 |
1 files changed, 35 insertions, 25 deletions
diff --git a/pavement.py b/pavement.py index 889a552f6..352e375d2 100644 --- a/pavement.py +++ b/pavement.py @@ -182,6 +182,18 @@ def compute_sha256(idirs): def write_release_task(options, filename='README'): """Append hashes of release files to release notes. + This appends file hashes to the release notes ane creates + four README files of the result in various formats: + + - README.rst + - README.rst.gpg + - README.md + - README.md.gpg + + The md file are created using `pandoc` so that the links are + properly updated. The gpg files are kept separate, so that + the unsigned files may be edited before signing if needed. + Parameters ---------- options : @@ -192,46 +204,44 @@ def write_release_task(options, filename='README'): """ idirs = options.installers.installersdir - source = paver.path.path(RELEASE_NOTES) - target = paver.path.path(filename + '.rst') - if target.exists(): - target.remove() + notes = paver.path.path(RELEASE_NOTES) + rst_readme = paver.path.path(filename + '.rst') + md_readme = paver.path.path(filename + '.md') - tmp_target = paver.path.path(filename + '.md') - source.copy(tmp_target) + # append hashes + with open(rst_readme, 'w') as freadme: + with open(notes) as fnotes: + freadme.write(fnotes.read()) - with open(str(tmp_target), 'a') as ftarget: - ftarget.writelines(""" + freadme.writelines(""" Checksums ========= MD5 --- +:: """) - ftarget.writelines([' %s\n' % c for c in compute_md5(idirs)]) - ftarget.writelines(""" + freadme.writelines([f' {c}\n' for c in compute_md5(idirs)]) + freadme.writelines(""" SHA256 ------ +:: """) - ftarget.writelines([' %s\n' % c for c in compute_sha256(idirs)]) + freadme.writelines([f' {c}\n' for c in compute_sha256(idirs)]) - # Sign release - cmd = ['gpg', '--clearsign', '--armor'] + # generate md file using pandoc before signing + sh(f"pandoc -s -o {md_readme} {rst_readme}") + + # Sign files if hasattr(options, 'gpg_key'): - cmd += ['--default-key', options.gpg_key] - cmd += ['--output', str(target), str(tmp_target)] - subprocess.check_call(cmd) - print("signed %s" % (target,)) - - # Change PR links for github posting, don't sign this - # as the signing isn't markdown compatible. - with open(str(tmp_target), 'r') as ftarget: - mdtext = ftarget.read() - mdtext = re.sub(r'^\* `(\#[0-9]*).*?`__', r'* \1', mdtext, flags=re.M) - with open(str(tmp_target), 'w') as ftarget: - ftarget.write(mdtext) + cmd = f'gpg --clearsign --armor --default_key {options.gpg_key}' + else: + cmd = 'gpg --clearsign --armor' + + sh(cmd + f' --output {rst_readme}.gpg {rst_readme}') + sh(cmd + f' --output {md_readme}.gpg {md_readme}') @task |