| 68 | |
| 69 | |
| 70 | def create_draft_release(version, base_commit): |
| 71 | print(f'Creating draft release for {version}...', file=sys.stderr) |
| 72 | |
| 73 | # Call gen_release_notes.py |
| 74 | gen_script = os.path.join(script_dir, 'gen_release_notes.py') |
| 75 | notes = subprocess.check_output([sys.executable, gen_script, version], text=True) |
| 76 | |
| 77 | # Save notes to out/release-notes-{version}.md |
| 78 | out_dir = os.path.join(root_dir, 'out') |
| 79 | os.makedirs(out_dir, exist_ok=True) |
| 80 | notes_file = os.path.join(out_dir, f'release-notes-{version}.md') |
| 81 | with open(notes_file, 'w', encoding='utf-8') as f: |
| 82 | f.write(notes) |
| 83 | |
| 84 | # Create the draft release |
| 85 | cmd = [ |
| 86 | 'gh', 'release', 'create', version, |
| 87 | '--draft', |
| 88 | '--title', version, |
| 89 | '--notes-file', notes_file, |
| 90 | '-R', REPO, |
| 91 | ] |
| 92 | if base_commit: |
| 93 | cmd.extend(['--target', base_commit]) |
| 94 | subprocess.run(cmd, check=True) |
| 95 | print(f'Draft release created successfully! Notes saved to {notes_file}', file=sys.stderr) |
| 96 | return 0 |
| 97 | |
| 98 | |
| 99 | def main(): |