Skip to content

Commit

Permalink
feat: allow to pass author
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.

Change-Id: I1c850e473aa086afe1f30a194e0da99d29c6bfa9
  • Loading branch information
sileht committed Oct 29, 2024
1 parent f07c9a5 commit ed26601
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 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 @@ -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 ed26601

Please sign in to comment.