work in progress: config processing: override slot values via .env or OS environment
This commit is contained in:
parent
5253c83ed5
commit
1a4be837d7
3 changed files with 23 additions and 7 deletions
20
config.lisp
20
config.lisp
|
@ -4,7 +4,8 @@
|
||||||
|
|
||||||
(defpackage :scopes/config
|
(defpackage :scopes/config
|
||||||
(:use :common-lisp)
|
(:use :common-lisp)
|
||||||
(:export #:base #:make-system-path #:override-keys))
|
(:export #:base
|
||||||
|
#:override-keys #:env-prefix #:env-path))
|
||||||
|
|
||||||
(in-package :scopes/config)
|
(in-package :scopes/config)
|
||||||
|
|
||||||
|
@ -15,6 +16,19 @@
|
||||||
(env-prefix :reader env-prefix
|
(env-prefix :reader env-prefix
|
||||||
:initarg :env-prefix
|
:initarg :env-prefix
|
||||||
:initform "SCOPES_")
|
:initform "SCOPES_")
|
||||||
(env-file :reader env-file
|
(env-path :reader env-path
|
||||||
:initarg :env-file
|
:initarg :env-path
|
||||||
:initform nil)))
|
:initform nil)))
|
||||||
|
|
||||||
|
(defmethod initialize-instance :after ((cfg base) &key &allow-other-keys)
|
||||||
|
(let* ((prefix (env-prefix cfg))
|
||||||
|
(ep (env-path cfg))
|
||||||
|
(dotenv-data (if ep (dotenv:read-env ep))))
|
||||||
|
(print prefix)
|
||||||
|
(dolist (sl (override-keys cfg))
|
||||||
|
(let ((key (concatenate 'string prefix (string sl))))
|
||||||
|
(format t "~%key: ~s " key)))))
|
||||||
|
|
||||||
|
|
||||||
|
;(defun dummy (cfg)
|
||||||
|
; (uiop:getenv key))
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
:version "0.0.1"
|
:version "0.0.1"
|
||||||
:homepage "https://www.cyberconcepts.org"
|
:homepage "https://www.cyberconcepts.org"
|
||||||
:description "Core packages of the scopes project."
|
:description "Core packages of the scopes project."
|
||||||
:depends-on (:alexandria :com.inuoe.jzon :local-time :log4cl :str)
|
:depends-on (:alexandria :cl-dotenv :com.inuoe.jzon :local-time :log4cl :str)
|
||||||
:components ((:file "config" :depends-on ("util"))
|
:components ((:file "config" :depends-on ("util"))
|
||||||
(:file "forge/forge")
|
(:file "forge/forge")
|
||||||
(:file "util")
|
(:file "util")
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
(:local-nicknames (:config :scopes/config)
|
(:local-nicknames (:config :scopes/config)
|
||||||
(:util :scopes/util)
|
(:util :scopes/util)
|
||||||
(:t :scopes/testing))
|
(:t :scopes/testing))
|
||||||
(:export #:run)
|
(:export #:run #:user #:password)
|
||||||
(:import-from :scopes/testing #:deftest #:==))
|
(:import-from :scopes/testing #:deftest #:==))
|
||||||
|
|
||||||
(in-package :scopes/test-config)
|
(in-package :scopes/test-config)
|
||||||
|
@ -16,8 +16,9 @@
|
||||||
|
|
||||||
(defclass test-config (config:base)
|
(defclass test-config (config:base)
|
||||||
((config:override-keys :initform '(user password))
|
((config:override-keys :initform '(user password))
|
||||||
(user :initarg :user :accessor user)
|
(config:env-path :initform (t:test-path ".test.env"))
|
||||||
(password :initarg :password :accessor password)))
|
(user :initarg :user :reader user)
|
||||||
|
(password :initarg :password :reader password)))
|
||||||
|
|
||||||
(defun run ()
|
(defun run ()
|
||||||
(let ((t:*test-suite* (t:test-suite "config")))
|
(let ((t:*test-suite* (t:test-suite "config")))
|
||||||
|
@ -35,4 +36,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*))
|
||||||
(== (user *config*) "default-user"))
|
(== (user *config*) "default-user"))
|
||||||
|
|
Loading…
Add table
Reference in a new issue