feat: add ghpr-open-pr
command
This commit is contained in:
parent
4124328244
commit
a265292b9e
2 changed files with 31 additions and 0 deletions
22
ghpr-api.el
22
ghpr-api.el
|
@ -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))
|
||||||
|
|
9
ghpr.el
9
ghpr.el
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue