From 4c64daebcd5600e3c269238e2088d328f4ff55a5 Mon Sep 17 00:00:00 2001 From: BirDt_ Date: Tue, 19 May 2026 22:53:23 +0800 Subject: [PATCH] Extend Jira config --- userland/jira.el | 49 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/userland/jira.el b/userland/jira.el index 8e844e0..12432ed 100644 --- a/userland/jira.el +++ b/userland/jira.el @@ -25,6 +25,27 @@ (use-package org-jira) (setq org-jira-working-dir "~/.org/tasks/projects") +(defcustom jira-active-projects '() + "Active Jira projects for custom JQLs." + :type '(repeat string) + :group 'jira + :group 'theurgy) + +(defun jira-project-list->string () + "Format `jira-active-projects' for use with JQL." + (concat "(" + (string-join (mapcar + (lambda (s) + (concat "\"" s "\"")) + jira-active-projects) ", ") + ")")) + +(setq org-jira-custom-jqls + `((:jql ,(concat + "project in " (jira-project-list->string) + " and sprint in openSprints()") + :limit 100 :filename "kanban"))) + (defun jira () "Sign in to Jira and fetch issues." (interactive) @@ -32,9 +53,31 @@ ;; Auth-source is buggy on MacOS. (when (equal system-type 'darwin) (kill-new - (shell-command-to-string (concat "security find-generic-password -a \"" - jiralib-user "\" -s \"jira\" -w")))) - (call-interactively #'org-jira-get-issues)) + (string-trim-right (shell-command-to-string (concat "security find-generic-password -a \"" + jiralib-user "\" -s \"jira\" -w"))))) + (call-interactively #'org-jira-get-issues) + (call-interactively #'org-jira-get-issues-from-custom-jql)) + +(defcustom jira-key-directory-alist '() + "Directories associated with a particular project --- git repositories. +For example, (\"CBM\" . \"~/build/etc\") will use ~/build/etc for ticket-specific commands in the CBM project." + :type 'alist + :group 'jira + :group 'theurgy) + +(defun jira-branch-ticket () + "Create a branch from the current ticket, in the repository specified by `jira-key-directory-alist'." + (interactive) + (let* ((issue-key (progn + (org-jira-copy-current-issue-key) + (substring-no-properties (car kill-ring)))) + (project-code (car (split-string + issue-key + "-"))) + (project-dir (cdr (assoc project-code jira-key-directory-alist)))) + (magit-status project-dir) + (kill-new issue-key) + (call-interactively #'magit-branch-create))) (provide 'jira)