diff --git a/app/demo/main.lisp b/app/demo/main.lisp index 4a56c72..75757b4 100644 --- a/app/demo/main.lisp +++ b/app/demo/main.lisp @@ -13,12 +13,23 @@ (in-package :scopes/app/demo) +(defvar *quit-queue* (lparallel.queue:make-queue :fixed-capacity 1)) + (defun main() + ;(setf (trivial-signal:signal-handler :int) #'quit-handler) + ;(setf (trivial-signal:signal-handler :term) #'quit-handler) (let ((config-path (util:relative-path "config" "etc"))) (format t "~%Hello World.~%config-path: ~s~%" config-path) (load config-path)) - (core:setup-services) - ;(setf forge:*forge-env* (forge:forge-env)) - ;(forge:setup-builtins) - (forge:repl) - (core:shutdown)) + (unwind-protect + (progn + (core:setup-services) + ;(setf forge:*forge-env* (forge:forge-env)) + ;(forge:setup-builtins) + ;(forge:repl) + (lparallel.queue:pop-queue *quit-queue*)) + (core:shutdown))) + +(defun quit-handler (sig) + (format t "~%quit-handler: got signal ~s~%" sig) + (lparallel.queue:push-queue sig)) diff --git a/app/demo/scopes-demo.asd b/app/demo/scopes-demo.asd index 664916b..e5d5206 100644 --- a/app/demo/scopes-demo.asd +++ b/app/demo/scopes-demo.asd @@ -6,7 +6,7 @@ :version "0.0.1" :homepage "https://www.cyberconcepts.org" :description "" - :depends-on (:scopes) + :depends-on (:scopes :lparallel :trivial-signal) :components ((:file "main")) :build-operation "program-op" :build-pathname "bin/demo" diff --git a/test/test-web.lisp b/test/test-web.lisp index cb5b9a3..9cd2c9c 100644 --- a/test/test-web.lisp +++ b/test/test-web.lisp @@ -47,8 +47,7 @@ (format nil "Link to example.com")) - (== (dom:render (dom:br nil)) - (format nil "
"))) + (== (dom:render (dom:br)) (format nil "
"))) (deftest test-jwt () (let ((secret (crypt:create-secret)) diff --git a/web/dom.lisp b/web/dom.lisp index 106f0b1..794a3ac 100644 --- a/web/dom.lisp +++ b/web/dom.lisp @@ -49,8 +49,7 @@ (defmethod put ((el element)) (let ((tag (tagname el))) (start tag (attrs el)) - (dolist (c (body el)) - (put c)) + (put (body el)) (end tag))) (defun elem (tag &optional attrs body) @@ -74,7 +73,7 @@ (defmacro make-elements (tags &optional (elem-fn 'elem)) `(progn ,@(mapcar (lambda (tag) ;`(make-element ,tag)) tags))) - `(defun ,tag (attrs &rest body) + `(defun ,tag (&optional attrs &rest body) (funcall (function ,elem-fn) ',tag attrs body))) tags)))