config: use new util dotenv handling when setting up env data

This commit is contained in:
Helmut Merz 2025-07-04 13:32:20 +02:00
parent 357fe3e20c
commit 6afcfa36fb
2 changed files with 13 additions and 17 deletions

View file

@ -35,19 +35,14 @@
(env-data :accessor env-data :initform (make-hash-table))))
(defmethod initialize-instance :after ((cfg root) &key &allow-other-keys)
(let* ((data (env-data cfg))
(prefix (env-prefix cfg))
(ep (env-path cfg))
(dotenv-data (if ep (dotenv:read-env ep))))
(let ((data (env-data cfg))
(ep (env-path cfg)))
(when ep (util:load-dotenv ep))
(dolist (sl (env-keys cfg))
(let* ((key (str:concat prefix (string sl)))
(env-val (uiop:getenv key))
(dotenv-val (if dotenv-data (gethash key dotenv-data))))
(if env-val
(setf (gethash sl data) env-val)
(when dotenv-val
(setf (uiop:getenv key) dotenv-val)
(setf (gethash sl data) dotenv-val)))))))
(let* ((key (str:concat (env-prefix cfg) (string sl)))
(val (util:getenv key)))
(when val
(setf (gethash sl data) val))))))
(defun root (&rest params &key (class 'root) &allow-other-keys)
(setf *root* (apply #'make-instance class params))

View file

@ -168,11 +168,12 @@
;;;; environment and dotenv file handling
(defun load-dotenv (ep)
(maphash
(lambda (k v)
(unless (uiop:getenv k)
(setf (uiop:getenv k) v)))
(dotenv:read-env ep)))
(let ((denv (dotenv:read-env ep)))
(maphash (lambda (k v)
(unless (uiop:getenv k)
(setf (uiop:getenv k) v)))
denv)
denv))
(defun getenv (k &optional default)
(or (uiop:getenv k) default))