about summary refs log tree commit diff
path: root/org-clubhouse.el
diff options
context:
space:
mode:
Diffstat (limited to 'org-clubhouse.el')
-rw-r--r--org-clubhouse.el31
1 files changed, 31 insertions, 0 deletions
diff --git a/org-clubhouse.el b/org-clubhouse.el
index 67fec58a443f..33539e2c98f9 100644
--- a/org-clubhouse.el
+++ b/org-clubhouse.el
@@ -728,6 +728,37 @@ allows manually passing a clubhouse ID and list of org-element plists to write"
         (message "Successfully updated clubhouse status to \"%s\""
                  clubhouse-workflow-state)))))
 
+
+(defun org-clubhouse-headlines-from-query (level query)
+  "Create `org-mode' headlines from a clubhouse query.
+
+Submits QUERY to clubhouse, and creates `org-mode' headlines from all the
+resulting stories at headline level LEVEL."
+  (interactive
+   "*nLevel: \nMQuery: ")
+  (let* ((sprint-stories
+          (org-clubhouse-request
+           "GET"
+           "search/stories"
+           :params '((query query))))
+         (sprint-story-list (-> sprint-stories cdr car cdr (append nil))))
+    (save-mark-and-excursion
+      (insert
+       (mapconcat (lambda (story)
+                    (format
+                     "%s TODO %s
+:PROPERTIES:
+:clubhouse-id: %s
+:END:
+"
+                     (make-string level ?*)
+                     (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)))))
+                  (reject-archived sprint-story-list) "\n")))))
+
 (define-minor-mode org-clubhouse-mode
   :init-value nil
   :group 'org