From 45089fe20bd2601b5e7a73e0b7d33e72207a4a7a Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 4 Jun 2024 15:32:04 +0200 Subject: [PATCH] basic config processing OK: override slot values via .env file or OS environment --- config.lisp | 16 +++++++++------- test/test-config.lisp | 4 +++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/config.lisp b/config.lisp index 43c112b..fa525ce 100644 --- a/config.lisp +++ b/config.lisp @@ -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))))))) diff --git a/test/test-config.lisp b/test/test-config.lisp index 319c090..1f03a28 100644 --- a/test/test-config.lisp +++ b/test/test-config.lisp @@ -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"))