@ -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 \n This PR was created automatically using LLMs. "
+ f " \n \n It uses the prompt file https://github.com/fastapi/fastapi/blob/master/docs/ { language } /llm-prompt.md. "
+ " \n \n In 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 \n This PR was created automatically using LLMs. "
+ f " \n \n It uses the prompt file https://github.com/fastapi/fastapi/blob/master/docs/ { language } /llm-prompt.md. "
+ " \n \n In 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 " )