polished build procedure
[rrq/hourglass.git] / siteconfig.lsp
1 (context 'MAIN:SITE)
2
3 (define (set-int K V) (set K (int V 0 10)))
4
5 (define (set-ints K V)
6   (map (curry set-int K) (clean empty? (parse V "\\s*,?\\s*" 0))))
7
8 (define (set-list K V)
9   (map (curry set K) (clean empty? (parse V "\\s*,?\\s*" 0))))
10
11 (constant
12  'FILE "hourglass.conf"
13  'KEYS '(
14          ("libc" set)
15          ("listener.ports" set-ints)
16          ("listener.ip" set)
17          ("listener.activity.dir" set)
18          ("control.action" set)
19          ("control.dat" set)
20          ("control.net" set)
21          ("control.extra.dat" set)
22          ("control.usage.dat" set)
23          ("control.usage.tmp" set)
24
25          ("wui.port" set-int)
26          ("wui.passwd" set)
27          )
28  )
29
30 (define (setting LINE)
31   (when (regex "^\\s([^;#][^=]*)=(.*)" LINE 0)
32     (let ((KV (map trim (list $1 $2))))
33       (if (lookup (KV 0) KEYS) (apply $it (list (sym (KV 0)) (KV 1)))))))
34
35 (map setting (parse (or (read-file FILE) "") "\n"))
36
37 "siteconfig.lsp"