pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
import subprocess
|
|
from pathlib import Path
|
|
|
|
|
|
def has_translation_changes(repo_path: Path) -> bool:
|
|
result = subprocess.run(
|
|
["git", "status", "--porcelain", "--", "docs"],
|
|
cwd=repo_path,
|
|
check=True,
|
|
capture_output=True,
|
|
encoding="utf-8",
|
|
)
|
|
return bool(result.stdout)
|
|
|
|
|
|
def commit_translation_changes(
|
|
*,
|
|
repo_path: Path,
|
|
bot_name: str,
|
|
language: str | None,
|
|
command: str | None,
|
|
) -> str | None:
|
|
if not has_translation_changes(repo_path):
|
|
print("No translation changes to commit")
|
|
return None
|
|
print("Setting up GitHub App git user")
|
|
subprocess.run(["git", "config", "user.name", bot_name], cwd=repo_path, check=True)
|
|
subprocess.run(
|
|
[
|
|
"git",
|
|
"config",
|
|
"user.email",
|
|
f"{bot_name}@users.noreply.github.com",
|
|
],
|
|
cwd=repo_path,
|
|
check=True,
|
|
)
|
|
print("Adding updated files")
|
|
subprocess.run(["git", "add", "docs"], cwd=repo_path, check=True)
|
|
message = "🌐 Update translations"
|
|
if language:
|
|
message += f" for {language}"
|
|
if command:
|
|
message += f" ({command})"
|
|
print("Committing updated files")
|
|
subprocess.run(["git", "commit", "-m", message], cwd=repo_path, check=True)
|
|
return message
|
|
|