website/src/env.lisp
2024-11-16 20:37:45 +09:00

25 lines
662 B
Common Lisp

(defpackage #:hp/env
(:use #:cl)
(:export #:dev-mode-p
#:prod-mode-p
#:*port*
#:*address*))
(in-package #:hp/env)
(defmacro defenv (name env &key default parser)
(let ((env-val (gensym "val")))
`(defparameter ,name
(let ((,env-val (uiop:getenv ,env)))
(if ,env-val
(funcall ,(or parser '#'identity) ,env-val)
,default)))))
(defenv *env* "HP_ENV" :default "dev")
(defenv *address* "HP_ADDRESS" :default "localhost")
(defenv *port* "HP_PORT" :default 3000 :parser #'parse-integer)
(defun dev-mode-p ()
(string= *env* "dev"))
(defun prod-mode-p ()
(string= *env* "prod"))