Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions code-review-actions.el
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,12 @@ Optionally set a FEEDBACK message."
(interactive)
(code-review--submit "COMMENT"))

;;;###autoload
(defun code-review-close-pr ()
"Close the current PR."
(interactive)
(code-review-close-pr))

;;;###autoload
(defun code-review-submit-request-changes ()
"Submit a Request Change for the current PR."
Expand Down Expand Up @@ -384,6 +390,26 @@ Optionally set a FEEDBACK message."
(switch-to-buffer-other-window buffer)
(code-review-comment-mode))))

;;;###autoload
(defun code-review-close-pr ()
"Close current PR. Sent immediately."
(interactive)
(let ((buffer (get-buffer-create code-review-comment-buffer-name))
(pr (code-review-db-get-pullreq)))
(if (code-review-github-repo-p pr)
(progn
(oset pr state "CLOSED")
(code-review-close
pr
(lambda ()
(code-review-db-update pr))))
(message "Not supported in %s yet."
(cond
((code-review-gitlab-repo-p pr)
"Gitlab")
((code-review-bitbucket-repo-p pr)
"Bitbucket"))))))

;;;###autoload
(defun code-review-set-title ()
"Change the title of current PR. Sent immediately."
Expand Down
4 changes: 4 additions & 0 deletions code-review-bitbucket.el
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,10 @@ For internal usage only.")
"Set title for your pr in BITBUCKET and call CALLBACK."
(code-review-bitbucket-not-supported-message))

(cl-defmethod code-review-close ((_bitbucket code-review-bitbucket-repo) _callback)
"Close pullreq in BITBUCKET and call CALLBACK afterward."
(code-review-bitbucket-not-supported-message))

(cl-defmethod code-review-send-description ((_bitbucket code-review-bitbucket-repo) _callback)
"Set description for your pr in BITBUCKET and call CALLBACK."
(code-review-bitbucket-not-supported-message))
Expand Down
29 changes: 22 additions & 7 deletions code-review-github.el
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,20 @@ Optionally ask for the FALLBACK? query."
:errorback #'code-review-github-errback
:callback (lambda (&rest _) (funcall callback))))

(cl-defmethod code-review-close ((github code-review-github-repo) callback)
"Close pullreq in GITHUB and call CALLBACK afterward."
(message "Closing PR...")
(ghub-patch (format "/repos/%s/%s/pulls/%s"
(oref github owner)
(oref github repo)
(oref github number))
nil
:auth code-review-auth-login-marker
:host code-review-github-host
:payload (a-alist 'state (oref github state))
:errorback #'code-review-github-errback
:callback (lambda (&rest _) (funcall callback))))

(cl-defmethod code-review-send-description ((github code-review-github-repo) callback)
"Set description for a pullreq in GITHUB and call CALLBACK."
(message "Sending new description...")
Expand Down Expand Up @@ -783,7 +797,7 @@ Optionally ask for the FALLBACK? query."
(cl-defmethod code-review-get-assignable-users ((github code-review-github-repo))
"Get a list of assignable users for current PR in GITHUB."
(let ((infos (oref github raw-infos))
(query "query($repo_owner:String!, $repo_name:String!, $cursor:String) {
(query "query($repo_owner:String!, $repo_name:String!, $cursor:String = null) {
repository(owner: $repo_owner, name: $repo_name) {
assignableUsers(first: 100, after: $cursor) {
pageInfo {
Expand All @@ -803,12 +817,13 @@ Optionally ask for the FALLBACK? query."
(let ((has-next-page t)
cursor res)
(while has-next-page
(let ((graphql-res (ghub-graphql query
`((repo_owner . ,(oref github owner))
(repo_name . ,(oref github repo))
(cursor . ,cursor))
:auth code-review-auth-login-marker
:host code-review-github-graphql-host)))
(let* ((baseData `((repo_owner . ,(oref github owner))
(repo_name . ,(oref github repo))))
(data (if cursor (cons `(cursor . ,cursor) baseData) baseData))

(graphql-res (ghub-graphql query data
:auth code-review-auth-login-marker
:host code-review-github-graphql-host)))
(let-alist graphql-res
(setq has-next-page .data.repository.assignableUsers.pageInfo.hasNextPage
cursor .data.repository.assignableUsers.pageInfo.endCursor
Expand Down
4 changes: 4 additions & 0 deletions code-review-gitlab.el
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,10 @@ Optionally sets FALLBACK? to get minimal query."
:payload `((title .,(oref gitlab title)))
:callback (lambda (&rest _) (funcall callback))))

(cl-defmethod code-review-close ((_gitlab code-review-gitlab-repo) _callback)
"Close pullreq in GITLAB and call CALLBACK afterward."
(code-review-gitlab-not-supported-message))

(cl-defmethod code-review-send-description ((_gitlab code-review-gitlab-repo) _callback)
"Set description for your pr in GITLAB and call CALLBACK."
(code-review-gitlab-not-supported-message))
Expand Down
3 changes: 3 additions & 0 deletions code-review-interfaces.el
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@
(cl-defgeneric code-review-send-title (obj callback)
"Set a pullrequest title for an OBJ and call CALLBACK afterward.")

(cl-defgeneric code-review-close (obj callback)
"Close a PR for an OBJ and call CALLBACK afterward.")

(cl-defgeneric code-review-send-description (obj callback)
"Set a pullrequest description for an OBJ and call CALLBACK afterward.")

Expand Down
1 change: 1 addition & 0 deletions code-review.el
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ OUTDATED."
("a" "Approve" code-review-submit-approve)
("r" "Request Changes" code-review-submit-request-changes)
("c" "Comment" code-review-submit-comments)
("C" "Close" code-review-close-pr)
("C-c C-s" "Save Unfinished Review" code-review-save-unfinished-review)
("C-c C-r" "Open Unfinished Review" code-review-open-unfinished-review)]
["Merge"
Expand Down