aboutsummaryrefslogtreecommitdiff
path: root/emacs/.emacs.d/lisp/my/my-rtliber.el
blob: cefc5eb68369a25f2c2b253ace5e16e57fd81814 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
;;; my-rtliber.el -- Extensions for rt-liberation -*- lexical-binding: t -*-

;; Copyright (C) 2023 Free Software Foundation.

;; Author: Yuchen Pei <id@ypei.org>
;; Package-Requires: ((emacs "28.2"))

;; This file is part of dotfiles.

;; dotfiles is free software: you can redistribute it and/or modify it under
;; the terms of the GNU Affero General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; dotfiles is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
;; Public License for more details.

;; You should have received a copy of the GNU Affero General Public
;; License along with dotfiles.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;; Extensions for rt-liberation.

;;; Code:


(require 'rt-liberation)
;;; fixme: fsf credentials
(defun my-rt-liber-my-open-tickets () (interactive)
		   (rt-liber-browse-query
        (format "owner = '%s' and status != 'resolved'"
                rt-liber-username)))

(defun my-rt-liber-my-tickets () (interactive)
		   (rt-liber-browse-query
        (format "owner = '%s'" rt-liber-username)))

(defun my-rt-liber-backlog ()
	(interactive)
	(rt-liber-browse-query
	 "created >= '90 days ago' and owner = 'nobody' and status != 'resolved'"))

(defun my-rt-liber-get-ticket-by-id (id)
	(interactive "sTicket ID: ") (rt-liber-browse-query (concat "id = "
	id)))

(defun my-rt-liber-query-by-subject (query)
	(interactive "sQuery in subject: ")
	(rt-liber-browse-query
	 (concat "subject like '" query "'")))

;;; Used to override `rt-liber-viewer-visit-in-browser'
(defun my-rt-liber-viewer-visit-in-browser (&optional external)
  "Visit this ticket section in the RT Web interface.
With a prefix arg, browse using secondary browser."
  (interactive "P")
  (let ((id (rt-liber-ticket-id-only rt-liber-ticket-local))
	(browser-function
	 (if external browse-url-secondary-browser-function
	   'browse-url)))
    (if id
	(funcall browser-function
		 (concat rt-liber-base-url "Ticket/Display.html?id=" id
			 "#txn-"
			 (alist-get 'id (rt-liber-viewer2-get-section-data))))
      (error "no ticket currently in view"))))

(provide 'my-rtliber)
;;; my-rtliber.el ends here