48 lines
2.0 KiB
Common Lisp
48 lines
2.0 KiB
Common Lisp
(ql:quickload '(:myoji-accent))
|
|
|
|
(defparameter *interface* "localhost")
|
|
(defparameter *port* 8080)
|
|
(defparameter *debug* nil)
|
|
(defparameter *db-path* (merge-pathnames
|
|
(uiop:pathname-directory-pathname *load-truename*)
|
|
"myoji.sqlite"))
|
|
(defparameter *help* nil)
|
|
|
|
(defun parse-arguments (&optional (args (uiop:command-line-arguments)))
|
|
(mapl (lambda (arg)
|
|
(macrolet ((require-arg (var)
|
|
`(assert (second ,var) () "~s requires and argument"
|
|
(car ,var))))
|
|
(when (member (car arg) '("-h" "--help") :test 'equal)
|
|
(setq *help* t))
|
|
(when (member (car arg) '("-i" "--interface") :test 'equal)
|
|
(require-arg arg)
|
|
(setq *interface* (second arg)))
|
|
(when (member (car arg) '("-p" "--port") :test 'equal)
|
|
(require-arg arg)
|
|
(setq *port* (parse-integer (second arg))))
|
|
(when (member (car arg) '("-b" "--db") :test 'equal)
|
|
(require-arg arg)
|
|
(setq *db-path* (parse-integer (second arg))))
|
|
(when (member (car arg) '("-d" "--debug") :test 'equal)
|
|
(setq *debug* t))))
|
|
args))
|
|
|
|
(defun print-help ()
|
|
(format t "usage: sbcl --load ~a~%" *load-pathname*)
|
|
(format t " -h|--help print this message, then exit~%")
|
|
(format t " -d|--debug enable debug output~%")
|
|
(format t " -b|--db path to the database (takes an argument)~%")
|
|
(format t " -p|--port the port to use (takes an argument)~%")
|
|
(format t " -i|--interface the address to bind to (takes an argument)~%")
|
|
(uiop:quit))
|
|
|
|
(parse-arguments)
|
|
(if *help*
|
|
(print-help)
|
|
(progn
|
|
(format t "Loading database from ~s~%" *db-path*)
|
|
(myoji-accent/accent:initialize-connection *db-path*)
|
|
(format t "Starting server on ~s:~s~%" *interface* *port*)
|
|
(reblocks/server:start :interface *interface* :port *port* :debug *debug*)))
|