diff options
Diffstat (limited to 'meson/docs/genrelnotes.py')
-rwxr-xr-x | meson/docs/genrelnotes.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/meson/docs/genrelnotes.py b/meson/docs/genrelnotes.py new file mode 100755 index 000000000..082ab45f0 --- /dev/null +++ b/meson/docs/genrelnotes.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 + +# Copyright 2019 The Meson development team +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +''' + Generates release notes for new releases of Meson build system +''' +import subprocess +import sys +import os +from glob import glob + +RELNOTE_TEMPLATE = '''--- +title: Release {} +short-description: Release notes for {} +... + +# New features + +''' + + +def add_to_sitemap(from_version, to_version): + ''' + Adds release note entry to sitemap.txt. + ''' + sitemapfile = '../sitemap.txt' + s_f = open(sitemapfile, encoding='utf-8') + lines = s_f.readlines() + s_f.close() + with open(sitemapfile, 'w', encoding='utf-8') as s_f: + for line in lines: + if 'Release-notes' in line and from_version in line: + new_line = line.replace(from_version, to_version) + s_f.write(new_line) + s_f.write(line) + +def generate(from_version, to_version): + ''' + Generate notes for Meson build next release. + ''' + ofilename = f'Release-notes-for-{to_version}.md' + with open(ofilename, 'w', encoding='utf-8') as ofile: + ofile.write(RELNOTE_TEMPLATE.format(to_version, to_version)) + for snippetfile in glob('snippets/*.md'): + snippet = open(snippetfile, encoding='utf-8').read() + ofile.write(snippet) + if not snippet.endswith('\n'): + ofile.write('\n') + ofile.write('\n') + subprocess.check_call(['git', 'rm', snippetfile]) + subprocess.check_call(['git', 'add', ofilename]) + add_to_sitemap(from_version, to_version) + +if __name__ == '__main__': + if len(sys.argv) != 3: + print(sys.argv[0], 'from_version to_version') + sys.exit(1) + FROM_VERSION = sys.argv[1] + TO_VERSION = sys.argv[2] + os.chdir('markdown') + generate(FROM_VERSION, TO_VERSION) |