From 385e98f2efc091301fc63ac491db18ae23b002d7 Mon Sep 17 00:00:00 2001 From: paku <paku@skyizwhite.dev> Date: Wed, 24 Apr 2024 00:00:12 +0900 Subject: [PATCH] Add defenv macro --- src/config/env.lisp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/config/env.lisp b/src/config/env.lisp index 4af77ac..12f4026 100644 --- a/src/config/env.lisp +++ b/src/config/env.lisp @@ -5,12 +5,19 @@ #:*port*)) (in-package #:hp/config/env) -(defparameter *env* (or (uiop:getenv "HP_ENV") "dev")) +(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 *port* "HP_PORT" :default 3000 :parser #'parse-integer) (defun dev-mode-p () (string= *env* "dev")) (defun prod-mode-p () (string= *env* "prod")) - -(defparameter *port* (parse-integer (or (uiop:getenv "HP_PORT") "3000")))