1#!/usr/bin/env python3 2# Copyright © 2019-2020 Intel Corporation 3 4# Permission is hereby granted, free of charge, to any person obtaining a copy 5# of this software and associated documentation files (the "Software"), to deal 6# in the Software without restriction, including without limitation the rights 7# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8# copies of the Software, and to permit persons to whom the Software is 9# furnished to do so, subject to the following conditions: 10 11# The above copyright notice and this permission notice shall be included in 12# all copies or substantial portions of the Software. 13 14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20# SOFTWARE. 21 22"""Update the main page, release notes, and calendar.""" 23 24import argparse 25import pathlib 26import subprocess 27 28 29def update_release_notes(version: str) -> None: 30 p = pathlib.Path('docs') / 'relnotes.rst' 31 32 with open(p, 'r') as f: 33 relnotes = f.readlines() 34 35 new_relnotes = [] 36 first_list = True 37 second_list = True 38 for line in relnotes: 39 if first_list and line.startswith('-'): 40 first_list = False 41 new_relnotes.append(f'- :doc:`{version} release notes <relnotes/{version}>`\n') 42 if not first_list and second_list and line.startswith(' relnotes/'): 43 second_list = False 44 new_relnotes.append(f' relnotes/{version}\n') 45 new_relnotes.append(line) 46 47 with open(p, 'w') as f: 48 for line in new_relnotes: 49 f.write(line) 50 51 subprocess.run(['git', 'add', p]) 52 53 54def update_calendar(version: str) -> None: 55 p = pathlib.Path('docs') / 'release-calendar.rst' 56 57 with open(p, 'r') as f: 58 calendar = f.readlines() 59 60 branch = '' 61 skip_line = False 62 new_calendar = [] 63 for line in calendar: 64 if version in line: 65 branch = line.split('|')[1].strip() 66 skip_line = True 67 elif skip_line: 68 skip_line = False 69 elif branch: 70 # Put the branch number back on the next line 71 new_calendar.append(line[:2] + branch + line[len(branch) + 2:]) 72 branch = '' 73 else: 74 new_calendar.append(line) 75 76 with open(p, 'w') as f: 77 for line in new_calendar: 78 f.write(line) 79 80 subprocess.run(['git', 'add', p]) 81 82 83def main() -> None: 84 parser = argparse.ArgumentParser() 85 parser.add_argument('version', help="The released version.") 86 args = parser.parse_args() 87 88 update_calendar(args.version) 89 done = 'update calendar' 90 91 if 'rc' not in args.version: 92 update_release_notes(args.version) 93 done += ' and link releases notes' 94 95 subprocess.run(['git', 'commit', '-m', 96 f'docs: {done} for {args.version}']) 97 98 99if __name__ == "__main__": 100 main() 101