From 3217a160029b9275df3a9f2bdfbcbaecf46c39f7 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 18 Jul 2024 12:22:34 +0200 Subject: [PATCH] provide config:path function for env-overridable paths (like log-path) --- app/demo/etc/config.lisp | 4 ++-- config.lisp | 6 +++++- shape.lisp => shape/shape.lisp | 0 web/server.lisp | 3 ++- 4 files changed, 9 insertions(+), 4 deletions(-) rename shape.lisp => shape/shape.lisp (100%) diff --git a/app/demo/etc/config.lisp b/app/demo/etc/config.lisp index 68d9fe8..83108f2 100644 --- a/app/demo/etc/config.lisp +++ b/app/demo/etc/config.lisp @@ -14,6 +14,6 @@ :routes `((("api") server:message-handler) (() server:fileserver :doc-root - ,(util:absolute-dir (config:from-env :docroot "/var/www/html"))))) - ;,(config:directory "/var/www/html" :env :docroot) + ;,(util:path-from-string (config:from-env :docroot "/var/www/html/"))))) + ,(config:path "/var/www/html/" :env-key :docroot)))) (config:add-action '(:test :data) #'core:echo) diff --git a/config.lisp b/config.lisp index 243e465..7d47e72 100644 --- a/config.lisp +++ b/config.lisp @@ -4,8 +4,9 @@ (defpackage :scopes/config (:use :common-lisp) + (:local-nicknames (:util :scopes/util)) (:export #:base #:root #:*root* #:*current* - #:env-data #:env-keys #:env-prefix #:env-path #:from-env + #:env-data #:env-keys #:env-prefix #:env-path #:from-env #:path #:actions #:add #:add-action #:children #:env-slots #:name #:setup #:parent #:shutdown)) @@ -90,6 +91,9 @@ (defun from-env (key default) (or (gethash key (env-data *root*)) default)) +(defun path (s &key env-key) + (util:path-from-string (from-env env-key s))) + (defun hash-to-slots (ht obj slots) (if ht (dolist (sl slots) diff --git a/shape.lisp b/shape/shape.lisp similarity index 100% rename from shape.lisp rename to shape/shape.lisp diff --git a/web/server.lisp b/web/server.lisp index 854e38d..905253a 100644 --- a/web/server.lisp +++ b/web/server.lisp @@ -76,12 +76,13 @@ (tail (last message-head))) (if (string= (car tail) "") (setf (car tail) "index.html")) + (log:debug "doc-root: ~s" doc-root) (let* ((rel-path (str:join "/" message-head)) (file-app (make-instance 'lack/app/file:lack-app-file :file rel-path :root doc-root))) (lack/component:call file-app env)))) -(defun message-handler (ctx env) +(defun message-handler (ctx env &key html-renderer) (let* ((iact (make-instance 'interaction)) (msg (message:create (head env) :data (plist (post-data env)) :sender iact))