diff --git a/config.lisp b/config.lisp index f470962..24442c4 100644 --- a/config.lisp +++ b/config.lisp @@ -5,7 +5,7 @@ (defpackage :scopes/config (:use :common-lisp) (:export #:base #:root #:*root* #:*current* - #:env-data #:env-keys #:env-prefix #:env-path + #:env-data #:env-keys #:env-prefix #:env-path #:from-env #:actions #:add #:add-action #:children #:env-slots #:name #:setup #:parent #:shutdown)) @@ -89,6 +89,9 @@ ;;;; utility functions +(defun from-env (key default) + (or (gethash key (env-data *root*)) default)) + (defun hash-to-slots (ht obj slots) (if ht (dolist (sl slots) diff --git a/test/config-postgres.lisp b/test/config-postgres.lisp index 2325257..3143801 100644 --- a/test/config-postgres.lisp +++ b/test/config-postgres.lisp @@ -3,11 +3,14 @@ (in-package :scopes/test-storage) -(defvar postgres-connect-args - '(:database-name "cltest" :host "localhost" :port 5432 - :username "testuser" :password "secret")) +(config:root :env-keys '(:db-name :db-user :db-password)) -(config:root :env-keys '(db-name db-user db-password)) +(defvar postgres-connect-args + (list :database-name (config:from-env :db-name "cltest") + :host "localhost" + :port 5432 + :username (config:from-env :db-user "testuser") + :password (config:from-env :db-password "secret"))) (config:add :storage :class 'storage:config :setup #'storage:setup :db-type :postgres diff --git a/test/config-sqlite.lisp b/test/config-sqlite.lisp index 1d7abf8..00caca3 100644 --- a/test/config-sqlite.lisp +++ b/test/config-sqlite.lisp @@ -3,10 +3,12 @@ (in-package :scopes/test-storage) -(defvar sqlite-connect-args - (list :database-name (namestring (scopes/testing:test-path "test.db" "data")))) +(config:root :env-keys '(:db-name)) -(config:root :env-keys '(db-name)) +(defvar sqlite-connect-args + (list :database-name + (namestring + (scopes/testing:test-path (config:from-env :db-name "test.db") "data")))) (config:add :storage :class 'storage:config :setup #'storage:setup :db-type :sqlite3