toobusy

Experimental and unfinished notmuch-like command-line tool for iCalendars

git clone https://git.8pit.net/toobusy.git

 1#!@GUILE@ \
 2--no-auto-compile -s
 3!#
 4
 5(use-modules (toobusy search)
 6             (toobusy config)
 7             (toobusy event)
 8             (toobusy util)
 9             (toobusy time)
10
11             (srfi srfi-1)
12             (srfi srfi-37))
13
14(define start-opt
15  (option
16    '(#\s "start") #t #f
17    (lambda (o n x vals)
18      (alist-cons 'start-time x vals))))
19
20(define end-opt
21  (option
22    '(#\e "end") #t #f
23    (lambda (o n x vals)
24      (alist-cons 'end-time x vals))))
25
26(define (parse-args args flags)
27  (reverse
28    (args-fold
29      args
30      flags
31      (lambda (o n x vals)
32        (error "unrecognized option" n))
33      cons
34      '())))
35
36(define (get-start-time opt)
37  (if opt
38    (string->tm opt)
39    (localtime (current-time))))
40
41(define (get-end-time opt start-tm)
42  (let ((opt (or opt (config-list-delta %config))))
43    (or (reltime->tm start-tm opt)
44        (string->tm opt))))
45
46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
47
48(define (main . args)
49  (let* ((flags (list start-opt end-opt))
50         (opts  (parse-args args flags)))
51    (let* ((start  (get-start-time (assq-ref opts 'start-time)))
52           (end    (get-end-time (assq-ref opts 'end-time) start)))
53      (display-events (search (range-query start end))))))
54
55(load-config!)
56(apply main (cdr (command-line)))
57
58;; vim: ft=scheme