2021-08-12 13:37:49 -07:00
|
|
|
(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))
|
|
|
|
(serverport (parse-integer (cadr argv)))
|
2021-08-12 14:38:14 -07:00
|
|
|
(server (make-instance 'easy-routes:routes-acceptor
|
2021-08-12 13:37:49 -07:00
|
|
|
:port serverport)))
|
2021-08-14 08:15:42 -07:00
|
|
|
(macrolet ((savefilepath (n)
|
|
|
|
`(uiop:subpathname worldpath (format nil "advtrains_~a" ,n))))
|
|
|
|
(ywsw:safe-text-route
|
|
|
|
("/dumpser/:p" :method :get) (&path (p 'string))
|
|
|
|
(format nil "~s" (atsl:from-file (savefilepath p) :alist)))
|
|
|
|
(ywsw:safe-text-route
|
|
|
|
("/pretty_dump/interlocking" :method :get) ()
|
|
|
|
(format nil "~s" (atil:import-data (savefilepath "interlocking.ls"))))
|
|
|
|
(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)))))
|