Skip to content

Commit 0aece59

Browse files
committed
feat: improve logic for creating demo releases in github
1 parent b8c4885 commit 0aece59

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

scripts/release-demo.py

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
# ///
1010
import itertools
1111
import subprocess
12+
import tempfile
1213
from pathlib import Path
1314
from typing import Annotated
1415

@@ -23,7 +24,6 @@
2324
from util import nox
2425
from util import require_clean_and_up_to_date_repo
2526
from util import FolderOption
26-
from util import RepoMetadata
2727
from util import DEMO
2828

2929

@@ -45,19 +45,15 @@ def release_demo(
4545
try:
4646
nox("setup-release", "--", "MINOR")
4747
logger.success(f"Successfully created release {demo_name}")
48-
_ensure_github_repo_set(repo=DEMO)
48+
gh("repo", "set-default", DEMO.app_author, DEMO.app_name)
4949

5050
except subprocess.CalledProcessError as error:
5151
logger.warning(f"Failed to setup release: {error}")
5252
_rollback_failed_release()
5353
raise error
5454

5555
git("push", "-u")
56-
57-
58-
def _ensure_github_repo_set(repo: RepoMetadata) -> None:
59-
"""Ensures the repo has a github repo set."""
60-
gh("repo", "set-default", repo.app_author, repo.app_name)
56+
_create_demo_pr()
6157

6258

6359
def _rollback_failed_release() -> None:
@@ -71,12 +67,30 @@ def _rollback_failed_release() -> None:
7167
git("branch", "-D", starting_demo_branch)
7268

7369

74-
def _create_demo_pr(version: str) -> None:
70+
def _create_demo_pr() -> None:
7571
"""Creates a pull request to merge the demo's feature branch into ."""
72+
current_branch: str = get_current_branch()
73+
if not current_branch.startswith("release/"):
74+
raise ValueError("Not in a release branch, canceling PR creation.")
75+
title: str = current_branch.capitalize()
76+
release_notes: str = __get_demo_release_notes()
77+
7678
pr_kwargs: dict[str, str] = {
77-
"--title": f"Release/{version}"
79+
"--title": title,
80+
"--body": release_notes,
81+
"--assignee": "@me",
82+
"--base": "main",
7883
}
79-
publish_release_commands: list[list[str]] = [
80-
["gh", "pr", "create", *itertools.chain(pr_kwargs.items())],
81-
]
84+
command: list[str] = ["gh", "pr", "create", *itertools.chain(pr_kwargs.items())]
85+
subprocess.run(command, check=True)
86+
87+
88+
def __get_demo_release_notes() -> str:
89+
"""Returns the release notes for the demo."""
90+
temp_folder: Path = Path(tempfile.mkdtemp()).resolve()
91+
notes_path: Path = temp_folder / "body.md"
92+
command: list[str] = ["uv", "run", "./scripts/get-release-notes.py", notes_path]
93+
subprocess.run(command, check=True)
8294

95+
notes_contents: str = notes_path.read_text()
96+
return notes_contents

{{cookiecutter.project_name}}/scripts/publish-release.py

Whitespace-only changes.

0 commit comments

Comments
 (0)