config: use new util dotenv handling when setting up env data
This commit is contained in:
parent
357fe3e20c
commit
6afcfa36fb
2 changed files with 13 additions and 17 deletions
19
config.lisp
19
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))
|
||||
|
|
|
@ -168,11 +168,12 @@
|
|||
;;;; environment and dotenv file handling
|
||||
|
||||
(defun load-dotenv (ep)
|
||||
(maphash
|
||||
(lambda (k v)
|
||||
(let ((denv (dotenv:read-env ep)))
|
||||
(maphash (lambda (k v)
|
||||
(unless (uiop:getenv k)
|
||||
(setf (uiop:getenv k) v)))
|
||||
(dotenv:read-env ep)))
|
||||
denv)
|
||||
denv))
|
||||
|
||||
(defun getenv (k &optional default)
|
||||
(or (uiop:getenv k) default))
|
||||
|
|
Loading…
Add table
Reference in a new issue