Skip to content

Commit

Permalink
feat: allow to pass author (#520)
Browse files Browse the repository at this point in the history
This is required to find the stacked pull request if the stack is not
owned by the owner of the token.

This will be leverage to run mergify-cli inside an GitHub action.
  • Loading branch information
sileht authored Oct 29, 2024
1 parent f07c9a5 commit 6c7f6a6
Showing 1 changed file with 21 additions and 7 deletions.
28 changes: 21 additions & 7 deletions mergify_cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -599,12 +599,9 @@ async def get_remote_changes(
user: str,
repo: str,
stack_prefix: str,
author: str,
) -> RemoteChanges:
r_author, r_repo = await asyncio.gather(
client.get("/user"),
client.get(f"/repos/{user}/{repo}"),
)
author = r_author.json()["login"]
r_repo = await client.get(f"/repos/{user}/{repo}")
repository = r_repo.json()

r = await client.get(
Expand Down Expand Up @@ -649,7 +646,7 @@ async def get_remote_changes(

# TODO(charly): fix code to conform to linter (number of arguments, local
# variables, statements, positional arguments, branches)
async def stack_push( # noqa: PLR0913, PLR0915, PLR0917
async def stack_push( # noqa: PLR0912, PLR0913, PLR0915, PLR0917
github_server: str,
token: str,
skip_rebase: bool,
Expand All @@ -660,6 +657,7 @@ async def stack_push( # noqa: PLR0913, PLR0915, PLR0917
create_as_draft: bool = False,
keep_pull_request_title_and_body: bool = False,
only_update_existing_pulls: bool = False,
author: str | None = None,
) -> None:
os.chdir(await git("rev-parse", "--show-toplevel"))
dest_branch = await git_get_branch_name()
Expand Down Expand Up @@ -720,8 +718,18 @@ async def stack_push( # noqa: PLR0913, PLR0915, PLR0917
follow_redirects=True,
timeout=5.0,
) as client:
if author is None:
r_author = await client.get("/user")
author = r_author.json()["login"]

with console.status("Retrieving latest pushed stacks"):
remote_changes = await get_remote_changes(client, user, repo, stack_prefix)
remote_changes = await get_remote_changes(
client,
user,
repo,
stack_prefix,
author,
)

with console.status("Preparing stacked branches..."):
console.log("Stacked pull request plan:", style="green")
Expand Down Expand Up @@ -877,6 +885,7 @@ async def _stack_push(args: argparse.Namespace) -> None:
args.draft,
args.keep_pull_request_title_and_body,
args.only_update_existing_pulls,
args.author,
)


Expand Down Expand Up @@ -951,6 +960,11 @@ async def register_stack_push_parser(
help="Don't update the title and body of already opened pull requests. "
"Default fetched from git config if added with `git config --add mergify-cli.stack-keep-pr-title-body true`",
)
parser.add_argument(
"--author",
help="Set the author of the stack (default: the author of the token)",
)

parser.add_argument(
"--trunk",
"-t",
Expand Down

0 comments on commit 6c7f6a6

Please sign in to comment.