2023-03-17 17:36:57 +01:00
|
|
|
;; SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
;; SPDX-FileCopyrightText: Copyright (C) 2023 by sterni
|
|
|
|
|
|
|
|
(in-package :config)
|
|
|
|
|
|
|
|
(eval-when (:compile-toplevel :load-toplevel)
|
|
|
|
(defun plist-to-alist (lst)
|
|
|
|
(loop for (name . (default . (parser . nil))) on lst by #'cdddr
|
|
|
|
collect (cons name (list default parser))))
|
|
|
|
|
|
|
|
(defun symbol-to-env-var-name (symbol)
|
|
|
|
(concatenate 'string
|
|
|
|
"MBLOG_"
|
|
|
|
(string-upcase
|
|
|
|
(remove #\* (substitute #\_ #\- (string symbol)))))))
|
|
|
|
|
|
|
|
(defmacro define-configuration-variables (&rest args)
|
|
|
|
(let ((vars (plist-to-alist args))
|
|
|
|
(val-var-sym (gensym)))
|
|
|
|
`(progn
|
|
|
|
,@(loop for (name . (default nil)) in vars
|
|
|
|
collect `(defvar ,name ,default))
|
|
|
|
|
|
|
|
(defun init-from-env ()
|
|
|
|
,@(loop for (name . (nil parser)) in vars
|
|
|
|
collect
|
|
|
|
`(when-let ((,val-var-sym (getenv ,(symbol-to-env-var-name name))))
|
|
|
|
(setf ,name (funcall ,parser ,val-var-sym))))))))
|
|
|
|
|
|
|
|
(define-configuration-variables
|
2023-05-16 16:11:00 +02:00
|
|
|
*general-buffer-size* (min 4096 qbase64:+max-bytes-length+) #'parse-integer)
|