(defpackage :ywatds (:use :cl) (:export :program-entry)) (in-package :ywatds) (defun program-entry () (let* ((argv (uiop:command-line-arguments)) (worldpath (uiop:ensure-pathname (car argv) :defaults (uiop:getcwd) :ensure-directory t :want-existing t :ensure-absolute t)) (scriptpath (uiop:ensure-pathname *load-truename*)) (scriptdir (uiop:pathname-directory-pathname scriptpath)) (wwwpath (uiop:ensure-pathname (uiop:subpathname scriptdir "www") :defaults (uiop:getcwd) :ensure-directory t :want-existing t :ensure-absolute t)) (serverport (parse-integer (cadr argv))) (server (make-instance 'easy-routes:easy-routes-acceptor :port serverport))) (setf (hunchentoot:acceptor-document-root server) wwwpath) (ywsw:safe-text-route ("/dumpser/:p" :method :get) (&path (p 'string)) (format nil "~s" (atsl:from-file (uiop:subpathname worldpath (format nil "advtrains_~a" p)) :alist))) (hunchentoot:start server) ;; loop until an error occurs (handler-case (loop (sleep most-positive-fixnum)) (t (c) (format t "~&~a~%" c))) (ignore-errors (hunchentoot:stop server) (uiop:quit))))