You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
4.3 KiB
90 lines
4.3 KiB
|
|
;;
|
|
;; JIRA
|
|
;;
|
|
;; Then start syncing with M-x org-jira-get-issues.
|
|
;; Goes to ~/.org-jira by default
|
|
(when (require 'org-jira)
|
|
(setq jiralib-url "http://jira:8080")
|
|
|
|
;; This doesn't fix the issue with org-jira-progress-issue. What made the required things?
|
|
;; (when (require 'ido-completing-read+)
|
|
;; (add-to-list 'ido-cr+-function-blacklist 'org-jira-progress-issue))
|
|
|
|
; Debug commands
|
|
;; (setq org-jira-verbosity 'debug)
|
|
;; (setq request-log-level 'debug)
|
|
;;(setq request-log-level 'warn)
|
|
;; (setq request-message-level 'debug)
|
|
;; (setq request-message-level 'warn)
|
|
|
|
;; (setq org-jira-working-dir "~/.org-jira")
|
|
;; Not sure why, but org-jira has trouble making this dir on its own
|
|
(files--ensure-directory org-jira-working-dir)
|
|
|
|
;; Overload this function to work with lower permissions (i.e. not set reporter)
|
|
;; (TODO) We'll also add labels, which weren't in the original for some reason
|
|
;; Need to do something like org-jira-build-components-list
|
|
(defun org-jira-update-issue-details (issue-id filename &rest rest)
|
|
"Update the details of issue ISSUE-ID in FILENAME. REST will contain optional input."
|
|
(ensure-on-issue-id-with-filename issue-id filename
|
|
;; Set up a bunch of values from the org content
|
|
(let* ((org-issue-components (org-jira-get-issue-val-from-org 'components))
|
|
;; (org-issue-labels (org-jira-get-issue-val-from-org 'labels))
|
|
(org-issue-description (s-trim (org-jira-get-issue-val-from-org 'description)))
|
|
(org-issue-priority (org-jira-get-issue-val-from-org 'priority))
|
|
(org-issue-type (org-jira-get-issue-val-from-org 'type))
|
|
(org-issue-assignee (cl-getf rest :assignee (org-jira-get-issue-val-from-org 'assignee)))
|
|
;; (org-issue-reporter (cl-getf rest :reporter (org-jira-get-issue-val-from-org 'reporter)))
|
|
(project (replace-regexp-in-string "-[0-9]+" "" issue-id))
|
|
(project-components (jiralib-get-components project)))
|
|
|
|
;; Lets fire off a worklog update async with the main issue
|
|
;; update, why not? This is better to fire first, because it
|
|
;; doesn't auto-refresh any areas, while the end of the main
|
|
;; update does a callback that reloads the worklog entries (so,
|
|
;; we hope that wont occur until after this successfully syncs
|
|
;; up). Only do this sync if the user defcustom defines it as such.
|
|
(when org-jira-worklog-sync-p
|
|
(org-jira-update-worklogs-from-org-clocks))
|
|
|
|
;; Send the update to jira
|
|
(let ((update-fields
|
|
(list (cons
|
|
'components
|
|
(or (org-jira-build-components-list
|
|
project-components
|
|
org-issue-components) []))
|
|
;; (cons 'labels org-issue-labels)
|
|
(cons 'priority (org-jira-get-id-name-alist org-issue-priority
|
|
(jiralib-get-priorities)))
|
|
(cons 'description org-issue-description)
|
|
(cons 'assignee (jiralib-get-user org-issue-assignee))
|
|
;; (cons 'reporter (jiralib-get-user org-issue-reporter))
|
|
(cons 'summary (org-jira-strip-priority-tags (org-jira-get-issue-val-from-org 'summary)))
|
|
(cons 'issuetype (org-jira-get-id-name-alist org-issue-type
|
|
(jiralib-get-issue-types))))))
|
|
|
|
;; If we enable duedate sync and we have a deadline present
|
|
(when (and org-jira-deadline-duedate-sync-p
|
|
(org-jira-get-issue-val-from-org 'deadline))
|
|
(setq update-fields
|
|
(append update-fields
|
|
(list (cons 'duedate (org-jira-get-issue-val-from-org 'deadline))))))
|
|
|
|
;; TODO: We need some way to handle things like assignee setting
|
|
;; and refreshing the proper issue in the proper buffer/filename.
|
|
(jiralib-update-issue
|
|
issue-id
|
|
update-fields
|
|
;; This callback occurs on success
|
|
(org-jira-with-callback
|
|
(message (format "Issue '%s' updated!" issue-id))
|
|
(jiralib-get-issue
|
|
issue-id
|
|
(org-jira-with-callback
|
|
(org-jira-log "Update get issue for refresh callback hit.")
|
|
(-> cb-data list org-jira-get-issues))))
|
|
))
|
|
)))
|
|
)
|
|
|