From 6afcfa36fb2d0bb778debc4d710f97d07981db1e Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 4 Jul 2025 13:32:20 +0200 Subject: [PATCH] config: use new util dotenv handling when setting up env data --- config.lisp | 19 +++++++------------ util/util.lisp | 11 ++++++----- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/config.lisp b/config.lisp index dcbe9af..653fabc 100644 --- a/config.lisp +++ b/config.lisp @@ -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)) diff --git a/util/util.lisp b/util/util.lisp index b07d63f..af6cb31 100644 --- a/util/util.lisp +++ b/util/util.lisp @@ -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))