37 lines
1.2 KiB
Common Lisp
37 lines
1.2 KiB
Common Lisp
(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))))
|