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