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)) (let* ((prefix (env-prefix cfg))
(ep (env-path cfg)) (ep (env-path cfg))
(dotenv-data (if ep (dotenv:read-env ep)))) (dotenv-data (if ep (dotenv:read-env ep))))
(print prefix) (print dotenv-data)
(dolist (sl (override-keys cfg)) (dolist (sl (override-keys cfg))
(let ((key (concatenate 'string prefix (string sl)))) (let* ((key (str:concat prefix (string sl)))
(format t "~%key: ~s " key))))) (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)
;(defun dummy (cfg) (if env-val
; (uiop:getenv key)) (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 () (defun run ()
(let ((t:*test-suite* (t:test-suite "config"))) (let ((t:*test-suite* (t:test-suite "config")))
(setf (uiop:getenv "SCOPES_PASSWORD") "very_secret")
(load (t:test-path "config-dummy" "etc")) (load (t:test-path "config-dummy" "etc"))
(test-make-path) (test-make-path)
(test-env-override) (test-env-override)
@ -37,4 +38,5 @@
(t:deftest test-env-override () (t:deftest test-env-override ()
(format t "~&override-keys: ~s~%" (config:override-keys *config*)) (format t "~&override-keys: ~s~%" (config:override-keys *config*))
(format t "~&env-path ~s~%" (config:env-path *config*)) (format t "~&env-path ~s~%" (config:env-path *config*))
(== (user *config*) "default-user")) (== (user *config*) "user-from-env-file")
(== (password *config*) "very_secret"))