basic config processing OK: override slot values via .env file or OS environment

This commit is contained in:
Helmut Merz 2024-06-04 15:32:04 +02:00
parent 1a4be837d7
commit 45089fe20b
2 changed files with 12 additions and 8 deletions

View file

@ -24,11 +24,13 @@
(let* ((prefix (env-prefix cfg))
(ep (env-path cfg))
(dotenv-data (if ep (dotenv:read-env ep))))
(print prefix)
(print dotenv-data)
(dolist (sl (override-keys cfg))
(let ((key (concatenate 'string prefix (string sl))))
(format t "~%key: ~s " key)))))
;(defun dummy (cfg)
; (uiop:getenv key))
(let* ((key (str:concat prefix (string sl)))
(env-val (uiop:getenv key))
(dotenv-val (gethash key dotenv-data)))
(format t "~%key: ~s, env-val: ~s, dotenv-val: ~s " key env-val dotenv-val)
(if env-val
(setf (slot-value cfg sl) env-val)
(if dotenv-val
(setf (slot-value cfg sl) dotenv-val)))))))

View file

@ -22,6 +22,7 @@
(defun run ()
(let ((t:*test-suite* (t:test-suite "config")))
(setf (uiop:getenv "SCOPES_PASSWORD") "very_secret")
(load (t:test-path "config-dummy" "etc"))
(test-make-path)
(test-env-override)
@ -37,4 +38,5 @@
(t:deftest test-env-override ()
(format t "~&override-keys: ~s~%" (config:override-keys *config*))
(format t "~&env-path ~s~%" (config:env-path *config*))
(== (user *config*) "default-user"))
(== (user *config*) "user-from-env-file")
(== (password *config*) "very_secret"))