From 8c1e61d8370aa34e3fb3662bbf33ead964cb2129 Mon Sep 17 00:00:00 2001 From: Zhaolong Zhu Date: Wed, 9 Nov 2022 08:52:21 -0800 Subject: [PATCH] pullrequest: add get_pr_state to get merged flag and merged commit Summary: get_pr_state will be used for auto-hide merged PRs in smart log. Reviewed By: quark-zju Differential Revision: D40942012 fbshipit-source-id: 5076371ca2c1ed1c7d509d0831a82aa063c996ad --- eden/scm/edenscm/ext/github/pullrequest.py | 25 +++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/eden/scm/edenscm/ext/github/pullrequest.py b/eden/scm/edenscm/ext/github/pullrequest.py index f366d7fe8f..a2fccca80f 100644 --- a/eden/scm/edenscm/ext/github/pullrequest.py +++ b/eden/scm/edenscm/ext/github/pullrequest.py @@ -4,7 +4,9 @@ # GNU General Public License version 2. from dataclasses import dataclass -from typing import TypedDict +from typing import Any, Dict, TypedDict + +from ghstack.github_cli_endpoint import GitHubCLIEndpoint class PullRequestIdDict(TypedDict): @@ -66,3 +68,24 @@ class GraphQLPullRequest: def get_head_branch_name(self) -> str: return self.graphql_data["headRefName"] + + +def get_pr_state(github: GitHubCLIEndpoint, pr: PullRequestId) -> Dict[str, Any]: + query = """ +query PullRequestQuery($owner: String!, $name: String!, $number: Int!) { + repository(name: $name, owner: $owner) { + pullRequest(number: $number) { + merged, + mergeCommit { + oid + } + } + } +} +""" + response = github.graphql(query, owner=pr.owner, name=pr.name, number=pr.number) + pr = response["data"]["repository"]["pullRequest"] + return { + "merged": pr["merged"], + "merge_commit": pr["mergeCommit"]["oid"] if pr["merged"] else None, + }