diff options
Diffstat (limited to 'contrib/prepare_release/rssbridge-log-helper.el')
-rw-r--r-- | contrib/prepare_release/rssbridge-log-helper.el | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/contrib/prepare_release/rssbridge-log-helper.el b/contrib/prepare_release/rssbridge-log-helper.el deleted file mode 100644 index a4b28226..00000000 --- a/contrib/prepare_release/rssbridge-log-helper.el +++ /dev/null @@ -1,151 +0,0 @@ -;;; rssbridge-log-helper.el --- A helper for preparing RSS-Bridge releases -*- lexical-binding:t; coding:utf-8 -*- - -;;; Commentary: - -;; Keyboard abbreviations used below: -;; C-x == Ctrl + x -;; M-x == Alt + x - -;; How to use this helper? -;; 1. Run "git log --reverse 2021-04-25..master > tmp.md" (2021-04-25 is an example tag of a previous version) -;; 2. Copy the contents of template.md to the start of tmp.md -;; 3. Open Emacs. Type M-x load-file <ENTER> -;; 4. Enter in the path to rssbridge-log-helper.el then <ENTER> -;; 5. Type M-x find-file <ENTER> -;; 6. Enter the path to tmp.md then <ENTER> -;; 7. Type M-x rssbridge-log-transient-state <ENTER> -;; 8. You can now use the following shortcuts to organize the commits: -;; x: Delete commit -;; g: Copy as general change -;; n: Copy as new bridge -;; m: Copy as modified bridge -;; r: Copy as removed bridge -;; <any key>: Quit -;; 9. Once you are done with all the commits, type C-x then C-s -;; 10. Exit Emacs with C-x then C-c - -;;; Code: - -(defun rssbridge-log--get-commit-block () - "Select a commit block that begins before the cursor." - (re-search-backward "^commit ") ;; (move-beginning-of-line nil) - (set-mark-command nil) - (right-char) - (re-search-forward "^commit ") - (move-end-of-line 1)) - -(defun rssbridge-log--goto-first-commit () - "Find the first commit in the file." - (goto-char (point-min)) - (re-search-forward "^commit ")) - -(defun rssbridge-log--remove-until-prev-commit-block () - "Remove from start of current line to previous commit block." - (move-beginning-of-line nil) - (set-mark-command nil) - (re-search-backward "^commit ") - (delete-region (region-beginning) (region-end))) - -(defun rssbridge-log--remove-until-next-commit-block () - "Remove from start of current line to next commit block." - (move-beginning-of-line nil) - (set-mark-command nil) - (re-search-forward "^commit ") - (move-beginning-of-line nil) - (delete-region (region-beginning) (region-end))) - -(defun rssbridge-log--cut-paste (arg) - "Copy current line to header that matches ARG." - (kill-whole-line 0) - (rssbridge-log--remove-until-next-commit-block) - (goto-char (point-min)) - (re-search-forward arg) - (move-end-of-line 1) - (newline) - (yank) - (set-mark-command 1) - (re-search-forward "^commit ") - (recenter)) - -(defun rssbridge-log-remove () - "Remove the current commit block. - -You can bind this function or use `rssbridge-log-transient-state' -to access the function." - (interactive) - (rssbridge-log--get-commit-block) - (rssbridge-log--remove-until-prev-commit-block) - (set-mark-command 1) - (re-search-forward "^commit ")) - -(defun rssbridge-log-copy-as-new () - "Copy the current commit block as a new bridge. - -You can bind this function or use `rssbridge-log-transient-state' -to access the function." - (interactive) - (rssbridge-log--get-commit-block) - (re-search-backward "^.*\\[\\(.*\\)\\].*\\((.*)\\)" (region-beginning)) - (replace-match "* \\1 () \\2") - (rssbridge-log--remove-until-prev-commit-block) - (rssbridge-log--cut-paste "## New bridges")) - -(defun rssbridge-log-copy-as-mod () - "Copy the current commit block as a modified bridge. - -You can bind this function or use `rssbridge-log-transient-state' -to access the function." - (interactive) - (rssbridge-log--get-commit-block) - (re-search-backward "^.*\\[\\(.*\\)\\]" (region-beginning)) - (replace-match "* \\1:") - (rssbridge-log--remove-until-prev-commit-block) - (rssbridge-log--cut-paste "## Modified bridges")) - -(defun rssbridge-log-copy-as-gen () - "Copy the current commit block as a general change. - -You can bind this function or use `rssbridge-log-transient-state' -to access the function." - (interactive) - (rssbridge-log--get-commit-block) - (re-search-backward "^.*\\[\\(.*\\)\\]" (region-beginning)) - (replace-match "* \\1:") - (rssbridge-log--remove-until-prev-commit-block) - (rssbridge-log--cut-paste "## General changes")) - -(defun rssbridge-log-copy-as-rem () - "Copy the current commit block as a removed bridge. - -You can bind this function or use `rssbridge-log-transient-state' -to access the function." - (interactive) - (rssbridge-log--get-commit-block) - (re-search-backward "^.*\\[\\(.*\\)\\]" (region-beginning)) - (replace-match "* \\1:") - (rssbridge-log--remove-until-prev-commit-block) - (rssbridge-log--cut-paste "## Removed bridges")) - - -(defun rssbridge-log-transient-state () - "Create a transient map for convienience. -x: Delete commit -g: Copy as general change -n: Copy as new bridge -m: Copy as modified bridge -r: Copy as removed bridge -<any key>: Quit" - (interactive) - (rssbridge-log--goto-first-commit) - (set-transient-map - (let ((map (make-sparse-keymap))) - (define-key map "x" 'rssbridge-log-remove) - (define-key map "g" 'rssbridge-log-copy-as-gen) - (define-key map "n" 'rssbridge-log-copy-as-new) - (define-key map "m" 'rssbridge-log-copy-as-mod) - (define-key map "r" 'rssbridge-log-copy-as-rem) - map) - t)) - -(provide 'rssbridge-log-helper) -;;; rssbridge-log-helper.el ends here |