Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
Dylan Baker | 0123b8f | 2020-03-05 14:04:04 -0800 | [diff] [blame] | 2 | # Copyright © 2019-2020 Intel Corporation |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 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 | |
Dylan Baker | abf9e7a | 2019-10-09 10:31:16 -0700 | [diff] [blame] | 24 | import argparse |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 25 | import pathlib |
Dylan Baker | 5cdaa06 | 2019-10-28 08:47:14 -0700 | [diff] [blame] | 26 | import subprocess |
| 27 | |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 28 | |
Dylan Baker | 0123b8f | 2020-03-05 14:04:04 -0800 | [diff] [blame] | 29 | def update_release_notes(version: str) -> None: |
Eric Engestrom | 6c4ad62 | 2020-06-23 02:24:00 +0200 | [diff] [blame] | 30 | p = pathlib.Path('docs') / 'relnotes.rst' |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 31 | |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 32 | with open(p, 'r') as f: |
| 33 | relnotes = f.readlines() |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 34 | |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 35 | new_relnotes = [] |
| 36 | first_list = True |
Eric Engestrom | 5f649be | 2020-07-15 23:53:59 +0200 | [diff] [blame] | 37 | second_list = True |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 38 | for line in relnotes: |
| 39 | if first_list and line.startswith('-'): |
| 40 | first_list = False |
Eric Engestrom | 5f649be | 2020-07-15 23:53:59 +0200 | [diff] [blame] | 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') |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 45 | new_relnotes.append(line) |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 46 | |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 47 | with open(p, 'w') as f: |
| 48 | for line in new_relnotes: |
| 49 | f.write(line) |
| 50 | |
Dylan Baker | 5cdaa06 | 2019-10-28 08:47:14 -0700 | [diff] [blame] | 51 | subprocess.run(['git', 'add', p]) |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 52 | |
| 53 | |
Dylan Baker | 0123b8f | 2020-03-05 14:04:04 -0800 | [diff] [blame] | 54 | def update_calendar(version: str) -> None: |
Eric Engestrom | 6c4ad62 | 2020-06-23 02:24:00 +0200 | [diff] [blame] | 55 | p = pathlib.Path('docs') / 'release-calendar.rst' |
Dylan Baker | d7ada7d | 2019-10-24 15:51:30 -0700 | [diff] [blame] | 56 | |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 57 | with open(p, 'r') as f: |
| 58 | calendar = f.readlines() |
Dylan Baker | d7ada7d | 2019-10-24 15:51:30 -0700 | [diff] [blame] | 59 | |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 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) |
Dylan Baker | d7ada7d | 2019-10-24 15:51:30 -0700 | [diff] [blame] | 75 | |
Eric Engestrom | ebb33b2 | 2020-05-03 20:55:55 +0200 | [diff] [blame] | 76 | with open(p, 'w') as f: |
| 77 | for line in new_calendar: |
| 78 | f.write(line) |
Dylan Baker | d7ada7d | 2019-10-24 15:51:30 -0700 | [diff] [blame] | 79 | |
Dylan Baker | 5cdaa06 | 2019-10-28 08:47:14 -0700 | [diff] [blame] | 80 | subprocess.run(['git', 'add', p]) |
Dylan Baker | d7ada7d | 2019-10-24 15:51:30 -0700 | [diff] [blame] | 81 | |
| 82 | |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 83 | def main() -> None: |
Dylan Baker | abf9e7a | 2019-10-09 10:31:16 -0700 | [diff] [blame] | 84 | parser = argparse.ArgumentParser() |
| 85 | parser.add_argument('version', help="The released version.") |
| 86 | args = parser.parse_args() |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 87 | |
Dylan Baker | 0123b8f | 2020-03-05 14:04:04 -0800 | [diff] [blame] | 88 | update_calendar(args.version) |
Eric Engestrom | 445e559 | 2020-05-07 00:20:46 +0200 | [diff] [blame] | 89 | done = 'update calendar' |
| 90 | |
Eric Engestrom | a28a089 | 2020-06-23 02:22:58 +0200 | [diff] [blame] | 91 | if 'rc' not in args.version: |
Eric Engestrom | 445e559 | 2020-05-07 00:20:46 +0200 | [diff] [blame] | 92 | update_release_notes(args.version) |
Eric Engestrom | a28a089 | 2020-06-23 02:22:58 +0200 | [diff] [blame] | 93 | done += ' and link releases notes' |
Eric Engestrom | 445e559 | 2020-05-07 00:20:46 +0200 | [diff] [blame] | 94 | |
Dylan Baker | 5cdaa06 | 2019-10-28 08:47:14 -0700 | [diff] [blame] | 95 | subprocess.run(['git', 'commit', '-m', |
Eric Engestrom | 445e559 | 2020-05-07 00:20:46 +0200 | [diff] [blame] | 96 | f'docs: {done} for {args.version}']) |
Dylan Baker | 3226b12 | 2019-09-26 14:23:47 -0700 | [diff] [blame] | 97 | |
| 98 | |
| 99 | if __name__ == "__main__": |
| 100 | main() |