feat: Allow pulling stories by story ID
Adds org-clubhouse-headline-from-story, which allows passing a single story ID to make a headline from. Fixes #14
This commit is contained in:
		
							parent
							
								
									d338b4d304
								
							
						
					
					
						commit
						205e4fcde6
					
				
					 1 changed files with 34 additions and 21 deletions
				
			
		|  | @ -799,6 +799,37 @@ contents of a drawer inside the element called DESCRIPTION, if any." | ||||||
|      :description new-description) |      :description new-description) | ||||||
|     (message "Successfully updated story description"))) |     (message "Successfully updated story description"))) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | (defun org-clubhouse--story-to-headline-text (story) | ||||||
|  |   (let ((story-id (alist-get 'id story))) | ||||||
|  |     (format | ||||||
|  |      "%s %s %s | ||||||
|  | :PROPERTIES: | ||||||
|  | :clubhouse-id: %s | ||||||
|  | :END: | ||||||
|  | :DESCRIPTION: | ||||||
|  | %s | ||||||
|  | :END: | ||||||
|  | " | ||||||
|  |      (make-string level ?*) | ||||||
|  |      (org-clubhouse-workflow-state-id-to-todo-keyword | ||||||
|  |       (alist-get 'workflow_state_id story)) | ||||||
|  |      (alist-get 'name story) | ||||||
|  |      (org-make-link-string | ||||||
|  |       (org-clubhouse-link-to-story story-id) | ||||||
|  |       (number-to-string story-id)) | ||||||
|  |      (alist-get 'description story)))) | ||||||
|  | 
 | ||||||
|  | (defun org-clubhouse-headline-from-story (level story-id) | ||||||
|  |   "Create a single `org-mode' headline at LEVEL based on the given clubhouse STORY-ID." | ||||||
|  | 
 | ||||||
|  |   (interactive "*nLevel: \nnStory ID: ") | ||||||
|  |   (let* ((story (org-clubhouse-request "GET" (format "/stories/%d" story-id)))) | ||||||
|  |     (if (equal '((message . "Resource not found.")) story) | ||||||
|  |         (message "Story ID not found: %d" story-id) | ||||||
|  |       (save-mark-and-excursion | ||||||
|  |         (insert (org-clubhouse--story-to-headline-text story)))))) | ||||||
|  | 
 | ||||||
| (defun org-clubhouse-headlines-from-query (level query) | (defun org-clubhouse-headlines-from-query (level query) | ||||||
|   "Create `org-mode' headlines from a clubhouse query. |   "Create `org-mode' headlines from a clubhouse query. | ||||||
| 
 | 
 | ||||||
|  | @ -816,27 +847,8 @@ resulting stories at headline level LEVEL." | ||||||
|     (if (null sprint-story-list) |     (if (null sprint-story-list) | ||||||
|         (message "Query returned no stories: %s" query) |         (message "Query returned no stories: %s" query) | ||||||
|       (save-mark-and-excursion |       (save-mark-and-excursion | ||||||
|         (insert |         (insert (mapconcat #'org-clubhouse--story-to-headline-text | ||||||
|          (mapconcat (lambda (story) |                            (reject-archived sprint-story-list) "\n")))))) | ||||||
|                       (format |  | ||||||
|                        "%s %s %s |  | ||||||
| :PROPERTIES: |  | ||||||
| :clubhouse-id: %s |  | ||||||
| :END: |  | ||||||
| :DESCRIPTION: |  | ||||||
| %s |  | ||||||
| :END: |  | ||||||
| " |  | ||||||
|                        (make-string level ?*) |  | ||||||
|                        (org-clubhouse-workflow-state-id-to-todo-keyword |  | ||||||
|                         (alist-get 'workflow_state_id story)) |  | ||||||
|                        (alist-get 'name story) |  | ||||||
|                        (let ((story-id (alist-get 'id story))) |  | ||||||
|                          (org-make-link-string |  | ||||||
|                           (org-clubhouse-link-to-story story-id) |  | ||||||
|                           (number-to-string story-id))) |  | ||||||
|                        (alist-get 'description story))) |  | ||||||
|                     (reject-archived sprint-story-list) "\n")))))) |  | ||||||
| 
 | 
 | ||||||
| (define-minor-mode org-clubhouse-mode | (define-minor-mode org-clubhouse-mode | ||||||
|   "If enabled, updates to the todo keywords on org headlines will update the |   "If enabled, updates to the todo keywords on org headlines will update the | ||||||
|  | @ -850,4 +862,5 @@ linked ticket in Clubhouse." | ||||||
|             t)) |             t)) | ||||||
| 
 | 
 | ||||||
| (provide 'org-clubhouse) | (provide 'org-clubhouse) | ||||||
|  | 
 | ||||||
| ;;; org-clubhouse.el ends here | ;;; org-clubhouse.el ends here | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue