diff options
Diffstat (limited to 'emacs')
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-org-jira.el | 88 | 
1 files changed, 88 insertions, 0 deletions
| diff --git a/emacs/.emacs.d/lisp/my/my-org-jira.el b/emacs/.emacs.d/lisp/my/my-org-jira.el index 8f716c3..2502f02 100644 --- a/emacs/.emacs.d/lisp/my/my-org-jira.el +++ b/emacs/.emacs.d/lisp/my/my-org-jira.el @@ -28,6 +28,94 @@  (require 'org-jira) +;;; override `org-jira-sdk-issue' +(defclass org-jira-sdk-issue (org-jira-sdk-record) +  ((affected-versions :type string :initarg :affected-versions) +   (assignee :type (or null string) :initarg :assignee) +   (components :type string :initarg :components) +   (fix-versions :type string :initarg :fix-versions) +   (labels :type string :initarg :labels) +   (created :type string :initarg :created) +   (description :type (or null string) :initarg :description) +   (duedate :type (or null string) :initarg :duedate) +   (headline :type string :initarg :headline) +   (id :type string :initarg :id)       ; TODO: Probably remove me +   (issue-id :type string :initarg :issue-id :documentation "The common ID/key, such as EX-1.") +   (issue-id-int :type string :initarg :issue-id-int :documentation "The internal Jira ID, such as 12345.") +   (filename :type (or null string) :initarg :filename :documentation "The filename to write issue to.") +   (priority :type (or null string) :initarg :priority) +   (proj-key :type string :initarg :proj-key) +   (related-issues :type string :initarg :related-issues) +   (reporter :type (or null string) :initarg :reporter) +   (resolution :type (or null string) :initarg :resolution) +   (sprint :type (or null string) :initarg :sprint) +   (start-date :type (or null string) :initarg :start-date) +   (status :type string :initarg :status) +   (summary :type string :initarg :summary) +   (type :type string :initarg :type) +   (type-id :type string :initarg :type-id) +   (updated :type string :initarg :updated) +   (data :initarg :data :documentation "The remote Jira data object (alist).") +   (hydrate-fn :initform #'jiralib-get-issue :initarg :hydrate-fn)) +  "An issue on the end.  ID of the form EX-1, or a numeric such as 10000.") + + +;;; override `org-jira-sdk-from-data' +(cl-defmethod org-jira-sdk-from-data ((rec org-jira-sdk-issue)) +  ;; (print rec) +  (cl-flet ((path (keys) (org-jira-sdk-path (oref rec data) keys))) +    (org-jira-sdk-issue +     :affected-versions (mapconcat (lambda (c) (org-jira-sdk-path c '(name))) (path '(fields versions)) ", ") +     :assignee (path '(fields assignee displayName)) +     :components (mapconcat (lambda (c) (org-jira-sdk-path c '(name))) (path '(fields components)) ", ") +     :fix-versions (mapconcat (lambda (c) (org-jira-sdk-path c '(name))) (path '(fields fixVersions)) ", ") +     :labels (mapconcat (lambda (c) (format "%s" c)) (mapcar #'identity (path '(fields labels))) ", ") +     :created (path '(fields created))     ; confirm +     :description (or (path '(fields description)) "") +     :duedate (or (path '(fields sprint endDate)) (path '(fields duedate)))         ; confirm +     :filename (path '(fields project key)) +     :headline (path '(fields summary)) ; Duplicate of summary, maybe different. +     :id (path '(key)) +     :issue-id (path '(key)) +     :issue-id-int (path '(id)) +     :priority (path '(fields priority name)) +     :proj-key (path '(fields project key)) +     :related-issues (mapconcat +                      (lambda (c) +                        (print c) +                        (if (org-jira-sdk-path c '(inwardIssue)) +                            (if (equal +                                 (org-jira-sdk-path +                                  c '(inwardIssue fields status name)) +                                 "Closed") +                                "" +                              (format "%s: %s %s" +                                      (org-jira-sdk-path c '(type inward)) +                                      (org-jira-sdk-path c '(inwardIssue key)) +                                      (org-jira-sdk-path c '(inwardIssue fields summary)))) +                          (if (equal +                               (org-jira-sdk-path +                                c '(outwardIssue fields status name)) +                               "Closed") +                              "" +                            (format "%s: %s %s" +                                    (org-jira-sdk-path c '(type outward)) +                                    (org-jira-sdk-path c '(outwardIssue key)) +                                    (org-jira-sdk-path c '(outwardIssue fields summary)))))) +                      (path '(fields issuelinks)) "; ") +     :reporter (path '(fields reporter displayName)) ; reporter could be an object of its own slot values +     :resolution (path '(fields resolution name))  ; confirm +     :sprint (path '(fields sprint name)) +     :start-date (path '(fields start-date))  ; confirm +     :status (org-jira-decode (path '(fields status name))) +     :summary (path '(fields summary)) +     :type (path '(fields issuetype name)) +     :type-id (path '(fields issuetype id)) +     :updated (path '(fields updated))  ; confirm +     ;; TODO: Remove this +     ;; :data (oref rec data) +     ))) +  ;; Override `org-jira--render-issue'  ;; include issue-id in the headline  (defun my-org-jira--render-issue (Issue) | 
