From: Sebastián Ramírez Date: Sun, 11 Jan 2026 00:03:50 +0000 (-0800) Subject: 🔨 Refactor translation script to allow committing in place (#14687) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49653aa295eedd1f0deeae6d61f4324c70d74e32;p=thirdparty%2Ffastapi%2Ffastapi.git 🔨 Refactor translation script to allow committing in place (#14687) --- diff --git a/.github/workflows/translate.yml b/.github/workflows/translate.yml index e6edc5aaba..734a3782fc 100644 --- a/.github/workflows/translate.yml +++ b/.github/workflows/translate.yml @@ -30,6 +30,11 @@ on: type: string required: false default: "" + commit_in_place: + description: Whether to commit changes directly instead of making a PR + type: boolean + required: false + default: false jobs: langs: @@ -109,3 +114,4 @@ jobs: LANGUAGE: ${{ matrix.lang }} EN_PATH: ${{ github.event.inputs.en_path }} COMMAND: ${{ matrix.command }} + COMMIT_IN_PLACE: ${{ github.event.inputs.commit_in_place }} diff --git a/scripts/translate.py b/scripts/translate.py index c7e6c7ea19..eba4ad6a2f 100644 --- a/scripts/translate.py +++ b/scripts/translate.py @@ -360,6 +360,9 @@ def make_pr( command: Annotated[str | None, typer.Option(envvar="COMMAND")] = None, github_token: Annotated[str, typer.Option(envvar="GITHUB_TOKEN")], github_repository: Annotated[str, typer.Option(envvar="GITHUB_REPOSITORY")], + commit_in_place: Annotated[ + bool, typer.Option(envvar="COMMIT_IN_PLACE", show_default=True) + ] = False, ) -> None: print("Setting up GitHub Actions git user") repo = git.Repo(Path(__file__).absolute().parent.parent) @@ -371,14 +374,22 @@ def make_pr( ["git", "config", "user.email", "github-actions[bot]@users.noreply.github.com"], check=True, ) - branch_name = "translate" - if language: - branch_name += f"-{language}" - if command: - branch_name += f"-{command}" - branch_name += f"-{secrets.token_hex(4)}" - print(f"Creating a new branch {branch_name}") - subprocess.run(["git", "checkout", "-b", branch_name], check=True) + current_branch = repo.active_branch.name + if current_branch == "master" and commit_in_place: + print("Can't commit directly to master") + raise typer.Exit(code=1) + + if not commit_in_place: + branch_name = "translate" + if language: + branch_name += f"-{language}" + if command: + branch_name += f"-{command}" + branch_name += f"-{secrets.token_hex(4)}" + print(f"Creating a new branch {branch_name}") + subprocess.run(["git", "checkout", "-b", branch_name], check=True) + else: + print(f"Committing in place on branch {current_branch}") print("Adding updated files") git_path = Path("docs") subprocess.run(["git", "add", str(git_path)], check=True) @@ -391,17 +402,20 @@ def make_pr( subprocess.run(["git", "commit", "-m", message], check=True) print("Pushing branch") subprocess.run(["git", "push", "origin", branch_name], check=True) - print("Creating PR") - g = Github(github_token) - gh_repo = g.get_repo(github_repository) - body = ( - message - + "\n\nThis PR was created automatically using LLMs." - + f"\n\nIt uses the prompt file https://github.com/fastapi/fastapi/blob/master/docs/{language}/llm-prompt.md." - + "\n\nIn most cases, it's better to make PRs updating that file so that the LLM can do a better job generating the translations than suggesting changes in this PR." - ) - pr = gh_repo.create_pull(title=message, body=body, base="master", head=branch_name) - print(f"Created PR: {pr.number}") + if not commit_in_place: + print("Creating PR") + g = Github(github_token) + gh_repo = g.get_repo(github_repository) + body = ( + message + + "\n\nThis PR was created automatically using LLMs." + + f"\n\nIt uses the prompt file https://github.com/fastapi/fastapi/blob/master/docs/{language}/llm-prompt.md." + + "\n\nIn most cases, it's better to make PRs updating that file so that the LLM can do a better job generating the translations than suggesting changes in this PR." + ) + pr = gh_repo.create_pull( + title=message, body=body, base="master", head=branch_name + ) + print(f"Created PR: {pr.number}") print("Finished")