feat: add ghpr-open-pr command

This commit is contained in:
Lucas Sta Maria 2025-08-27 16:32:35 +08:00
parent 4124328244
commit a265292b9e
Signed by: lucas
GPG key ID: F07FB16A826E3B47
2 changed files with 31 additions and 0 deletions

View file

@ -82,6 +82,28 @@ Returns a list of pull request objects on success, nil on failure."
(message "Error fetching pull requests: %s" error-thrown))))) (message "Error fetching pull requests: %s" error-thrown)))))
result)) result))
(defun ghpr--get-pr (repo-name pr-number)
"Retrieve a single pull request by PR-NUMBER in REPO-NAME.
Returns a parsed PR object on success, nil on failure."
(let ((token (ghpr--get-token))
(url (format "https://api.github.com/repos/%s/pulls/%s" repo-name pr-number))
(result nil))
(when token
(request url
:type "GET"
:headers `(("Accept" . "application/vnd.github+json")
("Authorization" . ,(format "Bearer %s" token))
("X-GitHub-Api-Version" . "2022-11-28"))
:parser 'json-read
:sync t
:success (cl-function
(lambda (&key data &allow-other-keys)
(setq result (ghpr--parse-api-pr data))))
:error (cl-function
(lambda (&key error-thrown &allow-other-keys)
(message "Error fetching PR: %s" error-thrown)))))
result))
(defun ghpr--get-diff-content (repo-name pr-number) (defun ghpr--get-diff-content (repo-name pr-number)
"Retrieve the diff contents for PR-NUMBER in REPO-NAME." "Retrieve the diff contents for PR-NUMBER in REPO-NAME."
(let ((token (ghpr--get-token)) (let ((token (ghpr--get-token))

View file

@ -54,6 +54,15 @@
(let ((pr (cdr (assoc selected-item pr-items)))) (let ((pr (cdr (assoc selected-item pr-items))))
(ghpr--open-pr pr repo-name)))))))) (ghpr--open-pr pr repo-name))))))))
(defun ghpr-open-pr (pr-number)
"Open a specific pull request by PR-NUMBER."
(interactive "nPR number: ")
(let* ((repo-name (ghpr--get-repo-name))
(pr (when repo-name (ghpr--get-pr repo-name pr-number))))
(if pr
(ghpr--open-pr pr repo-name)
(message "Could not open PR #%d" pr-number))))
(provide 'ghpr) (provide 'ghpr)
;;; ghpr.el ends here ;;; ghpr.el ends here