Files
lispostory/main.lisp

62 lines
2.2 KiB
Common Lisp

(in-package :lispostory)
(defparameter *chronostory-map-url-format* "https://chronostory.onrender.com/api/map-info?mapId=~a")
(defparameter *chronostory-gacha-search-format* "https://chronostory.onrender.com/api/gacha-search?itemId=~a")
(defparameter *chronostory-gacha-url-format "https://chronostory.onrender.com/api/gacha-items?gachaId=~a")
(defun print-version-information ()
(let* ((program-name (car sb-ext:*posix-argv*))
(write-time (file-write-date program-name)))
(multiple-value-bind (second minute hour date month year)
(decode-universal-time write-time)
(let ((dt (format nil "~4,'0d-~2,'0d-~2,'0d ~2,'0d:~2,'0d:~2,'0d"
year month date hour minute second)))
(format t "lispostory, created ~a~%" dt)))))
(defun get-arg (opt args)
"Get's the argument for a given command line option. Expects <program opt arg>"
(loop :for (current next) :on args
:while next
:when (string-equal current opt)
:return next))
(defun refresh-data (data-type)
(string-case data-type
("drops" (refresh (make-drop-data-source)))
("items" (refresh (make-item-data-source)))
("mobs" (refresh (make-mob-data-source)))
("spawns" (refresh (make-spawn-data-source)))))
(defun main ()
(sb-ext:disable-debugger)
(let ((args (rest sb-ext:*posix-argv*)))
(when (find-string "--fail" args)
(error "Simulated error!"))
(when (find-string "--version" args)
(print-version-information))
(when-let ((arg (get-arg "refresh"))))))
(defun create-exe-and-die ()
(sb-ext:save-lisp-and-die
"lispostory"
:toplevel 'lispostory:main
:executable t
:save-runtime-options :accept-runtime-options))
(comment
(defvar foo nil
(setf foo (serapeum/bundle:random-elt *chronostory-mobs*)
*chronostory-drops*
(reload-item-data
(filter-map
(lambda (m)
(when (= (parse-integer (gethash "DROPPERID" m))
(parse-integer (href foo "mob" "mob_id")))
(gethash "ITEMNAME" m))
(coerce *chronostory-drops* 'list)
(hash-table-keys (aref (@ *chronostory-spawns* :el-nath) 0))
(hash-table-keys (aref *chronostory-drops* 0))))))))