From e7f8bdd548a7347759c8704f4293daacf1277581 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 19 Jun 2020 16:51:31 +0100 Subject: feat(emacs-pkgs/tvl): Add magit shortcuts for reviews & co Introduces two new shortcuts in the magit popup for pushing: * R: Push for review * S: Push to submit The existing "P" command remains, but has been renamed to "rubberstamp" and documented with a warning. To make this work across people's different setups, customisation options for TVL-specific code are being added. Change-Id: I48e75db55b5f793342fc898093629e437f58dcb2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/503 Reviewed-by: glittershark --- tools/emacs-pkgs/tvl/default.nix | 2 +- tools/emacs-pkgs/tvl/tvl.el | 55 ++++++++++++++++++++++++++++++++++------ 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/tools/emacs-pkgs/tvl/default.nix b/tools/emacs-pkgs/tvl/default.nix index 3f230aef3c0c..d191c6b6f79e 100644 --- a/tools/emacs-pkgs/tvl/default.nix +++ b/tools/emacs-pkgs/tvl/default.nix @@ -6,5 +6,5 @@ trivialBuild rec { pname = "tvl"; version = "1.0"; src = ./tvl.el; - packageRequires = [ magit ]; + packageRequires = [ magit s ]; } diff --git a/tools/emacs-pkgs/tvl/tvl.el b/tools/emacs-pkgs/tvl/tvl.el index 31d1143188be..4947f66a65c9 100644 --- a/tools/emacs-pkgs/tvl/tvl.el +++ b/tools/emacs-pkgs/tvl/tvl.el @@ -1,10 +1,11 @@ ;;; tvl.el --- description -*- lexical-binding: t; -*- ;; ;; Copyright (C) 2020 Griffin Smith +;; Copyright (C) 2020 The TVL Contributors ;; ;; Author: Griffin Smith ;; Version: 0.0.1 -;; Package-Requires: (cl-lib magit) +;; Package-Requires: (s magit) ;; ;; This file is not part of GNU Emacs. ;; @@ -15,18 +16,56 @@ ;;; Code: (require 'magit) +(require 's) -(define-suffix-command magit-push-and-submit () +(defgroup tvl nil + "Customisation options for TVL functionality.") + +(defcustom tvl-gerrit-remote "origin" + "Name of the git remote for gerrit" + :group 'tvl) + +(defun tvl--gerrit-ref (target-branch &optional flags) + (let ((flag-suffix (if flags (format "%%l=%s" (s-join "," flags)) + ""))) + (format "HEAD:refs/for/%s%s" target-branch flag-suffix))) + +(define-suffix-command magit-gerrit-push-for-review () + "Push to Gerrit for review." (interactive) - (magit-push-refspecs - "origin" "HEAD:refs/for/master%l=Code-Review+2,publish-comments,submit" - nil)) + (magit-push-refspecs tvl-gerrit-remote + (tvl--gerrit-ref "master") + nil)) (transient-append-suffix - #'magit-push - ["r"] + #'magit-push ["r"] + (list "R" "push to Gerrit for review" #'magit-gerrit-push-for-review)) - (list "P" "Push and submit to gerrit" #'magit-push-and-submit)) +(define-suffix-command magit-gerrit-submit () + "Push to Gerrit for review." + (interactive) + (magit-push-refspecs tvl-gerrit-remote + (tvl--gerrit-ref "master" '("submit")) + nil)) + +(transient-append-suffix + #'magit-push ["r"] + (list "S" "push to Gerrit to submit" #'magit-gerrit-submit)) + + +(define-suffix-command magit-gerrit-rubberstamp () + "Push, automatically approve and submit to Gerrit. This +rubberstamp operation is dangerous and should only be used in +`//users'." + (interactive) + (magit-push-refspecs tvl-gerrit-remote + (tvl--gerrit-ref "master" + '("Code-Review+2" "publish-comments" "submit")) + nil)) + +(transient-append-suffix + #'magit-push ["r"] + (list "P" "push, rubberstamp & submit to Gerrit" #'magit-gerrit-rubberstamp)) (provide 'tvl) ;;; tvl.el ends here -- cgit 1.4.1