Better default configuration parameters handling.

This commit is contained in:
Dominik Pantůček 2023-04-17 19:39:15 +02:00
parent 6cf116ce98
commit 9576a24ebb
2 changed files with 38 additions and 34 deletions

View file

@ -55,19 +55,23 @@
(define *etc-hackerbase* (make-parameter "/etc/hackerbase")) (define *etc-hackerbase* (make-parameter "/etc/hackerbase"))
;; Needed by multiple modules actually ;; Needed by multiple modules actually
(define *members-directory* (make-parameter "members")) (define *members-directory* (make-parameter #f))
(define =members-directory= "members")
;; List of bank accounts and Fio API keys (no support for other banks now) ;; List of bank accounts and Fio API keys (no support for other banks now)
(define *apikeys-file* (make-parameter "apikey.ntlm")) (define *apikeys-file* (make-parameter #f))
(define =apikeys-file= "apikey.ntlm")
;; Old last checket transaction id support ;; Old last checket transaction id support
(define *jendasap-checked* (make-parameter "checked.ntlm")) (define *jendasap-checked* (make-parameter #f))
(define =jendasap-checked= "checked.ntlm")
;; Where are the bank CSV files ;; Where are the bank CSV files
(define *bank-dir* (make-parameter #f)) (define *bank-dir* (make-parameter #f))
;; From address for emails ;; From address for emails
(define *email-from* (make-parameter "Brmlab - Rada <rada@brmlab.cz>")) (define *email-from* (make-parameter #f))
(define =email-from= "Brmlab - Rada <rada@brmlab.cz>")
;; Loads the configuration file and possibly changes the default ;; Loads the configuration file and possibly changes the default
;; parameters. ;; parameters.
@ -82,12 +86,31 @@
(let ((k (car kv)) (let ((k (car kv))
(v (cdr kv))) (v (cdr kv)))
(case k (case k
((members-directory) (*members-directory* v)) ((members-directory)
((apikeys-file) (*apikeys-file* v)) (when (not (*members-directory*))
((jendasap-checked) (*jendasap-checked* v)) (*members-directory* v)))
((bank-dir) (*bank-dir* v)) ((apikeys-file)
((email-from) (*email-from* v)) (when (not (*apikeys-file*))
(*apikeys-file* v)))
((jendasap-checked)
(when (not (*jendasap-checked*))
(*jendasap-checked* v)))
((bank-dir)
(when (not (*bank-dir*))
(*bank-dir* v)))
((email-from)
(when (not (*email-from*))
(*email-from* v)))
))) )))
(loop (cdr lines))))))) (loop (cdr lines))))))
(when (not (*members-directory*))
(*members-directory* =members-directory=))
(when (not (*apikeys-file*))
(*apikeys-file* =apikeys-file=))
(when (not (*jendasap-checked*))
(*jendasap-checked* =jendasap-checked=))
;; No bank-dir - #f default
(when (not (*email-from*))
(*email-from* =email-from=)))
) )

View file

@ -60,13 +60,6 @@
(define -send-emails- (make-parameter #f)) (define -send-emails- (make-parameter #f))
(define -quiet- (make-parameter #f)) (define -quiet- (make-parameter #f))
;; Configuration overrides
(define =members-directory= (make-parameter #f))
(define =apikeys-file= (make-parameter #f))
(define =jendasap-checked= (make-parameter #f))
(define =bank-dir= (make-parameter #f))
(define =email-from= (make-parameter #f))
;; Arguments parsing ;; Arguments parsing
(command-line (command-line
print-help print-help
@ -86,18 +79,18 @@
(-config (fname) "Initial configuration" (-config (fname) "Initial configuration"
(*etc-hackerbase* fname)) (*etc-hackerbase* fname))
(-members (dir) "Members base directory" (-members (dir) "Members base directory"
(=members-directory= dir)) (*members-directory* dir))
(-month (YYYY-MM) "Specify current month" (-month (YYYY-MM) "Specify current month"
(-normal-month- #f) (-normal-month- #f)
(*current-month* (string->month YYYY-MM))) (*current-month* (string->month YYYY-MM)))
(-tstyle (style) "Use given table style: debug, ascii, unicode" (-tstyle (style) "Use given table style: debug, ascii, unicode"
(*table-border-style* (string->symbol style))) (*table-border-style* (string->symbol style)))
(-apikey (fname) "File with Fio API keys" (-apikey (fname) "File with Fio API keys"
(=apikeys-file= fname)) (*apikeys-file* fname))
(-bankdir (dir) "Where are bank CSV files" (-bankdir (dir) "Where are bank CSV files"
(=bank-dir= dir)) (*bank-dir* dir))
(-checked (file) "JendaSAP checked.ntlm file" (-checked (file) "JendaSAP checked.ntlm file"
(=jendasap-checked= file)) (*jendasap-checked* file))
(-ml-all () "Load all mailman lists" (-ml-all () "Load all mailman lists"
(-ml-all- #t)) (-ml-all- #t))
(-destroyed () "Show destroyed members in -fees" (-destroyed () "Show destroyed members in -fees"
@ -112,7 +105,7 @@
(-quiet- #t) (-quiet- #t)
(*progress-quiet* #t)) (*progress-quiet* #t))
(-from (email) "Sender email address" (-from (email) "Sender email address"
(=email-from= email)) (*email-from* email))
"" ""
"Query options:" "Query options:"
(-mi (id) "Specify member by id" (-member-id- (string->number id))) (-mi (id) "Specify member by id" (-member-id- (string->number id)))
@ -176,18 +169,6 @@
;; Load default configuration ;; Load default configuration
(load-configuration!) (load-configuration!)
;; Override from command-line
(when (=members-directory=)
(*members-directory* (=members-directory=)))
(when (=apikeys-file=)
(*apikeys-file* (=apikeys-file=)))
(when (=jendasap-checked=)
(*jendasap-checked* (=jendasap-checked=)))
(when (=bank-dir=)
(*bank-dir* (=bank-dir=)))
(when (=email-from=)
(*email-from* (=email-from=)))
;; Run tests ;; Run tests
(when (-run-tests?-) (when (-run-tests?-)
(run-all-tests!) (run-all-tests!)