luvcraft/tools/runner.lisp
in-package#:luvcraft.tools
defunusage
&optional
stream*standard-output*
formatstream"Usage: luv COMMAND [ARGS...]~%"
formatstream"~%"
formatstream"Commands:~%"
formatstream" block-world TARGET [--backend metal|vulkan] [--count N]~%"
formatstream" [--width N] [--height N] [--yaw-step R]~%"
formatstream" gazetteer TARGET-DIR [--backend metal|vulkan] [--view NAME]~%"
formatstream" [--width N] [--height N]~%"
formatstream" [--count N] [--forward-step R] [--yaw-step R]~%"
formatstream" [--day-start R] [--day-step R] [--difference-scale R]~%"
formatstream" [--shadow-only 1]~%"
formatstream" eval FORM [--package PACKAGE]~%"
formatstream" web [--host HOST] [--port PORT]~%"
formatstream" lobby get KEY | put KEY [VALUE] | rm KEY | ls | host~%"
formatstream" (the tailnet lobby's value store; put without VALUE reads stdin)~%"
formatstream" help~%"
define-conditioncommand-line-error
error
message:initarg:message:readercommand-line-error-message
:report
lambda
conditionstream
formatstream"~A"
command-line-error-messagecondition
defuncommand-line-error
control&restarguments
defunparse-integer-option
stringname
handler-case
let
value
parse-integerstring:junk-allowednil
unless
valuepluspvalue
parse-error
defunparse-real-option
stringname
let
*read-eval*nil
handler-case
error
defunparse-backend-option
stringname
cond#+darwin
((string-equal string "metal") :metal)
string-equalstring"vulkan"
:vulkant
defunmake-backend-provider
backend
casebackend
:vulkan
#+darwin
(:metal (make-instance 'luv:metal-gpu-provider))make-instance'luv:vulkan-gpu-provider
otherwise
defunoption-value
argumentsoption
defunparse-keyword-options
argumentsspecs
let
positionals'
options'
loopwhileargumentsforargument=
poparguments
docond
string=argument"--"
dolist
positionalarguments
pushpositionalpositionals
setfargumentsnil
uiop:string-prefix-p"--"argument
let*
spec
assocargumentspecs:test#'string=
key
parser
value
poparguments
setf
getfoptionskey
funcallparservalueargument
t
pushargumentpositionals
values
nreversepositionals
optionsdefuncommand-eval
arguments
multiple-value-bind
positionalsoptions
unless
command-line-error"eval expects exactly one FORM."
let*
package-name
package
let
*package*package
print-values
multiple-value-list
eval
read-from-string
firstpositionals
defundispatch-command
commandarguments
cond
string=command"block-world"
command-block-worldarguments
string=command"gazetteer"
command-gazetteerarguments
string=command"web"
command-webarguments
string=command"eval"
command-evalarguments
string=command"lobby"
command-lobbyarguments
t
defundispatch-main
arguments
handler-case
command-line-error
condition
format*error-output*"luv: ~A~%~%"condition
usage*error-output*
defunmain
&optional
arguments
uiop:command-line-arguments
handler-case
progn
finish-output*standard-output*
finish-output*error-output*
error
condition
format*error-output*"luv: ~A~%"condition
finish-output*error-output*
defun usage
(&optional (stream *standard-output*))defun parse-integer-option
(string name)defun parse-real-option
(string name)defun parse-backend-option
(string name)defun make-backend-provider
(backend)defvar *gpu-provider*
If you're lucky, someone has bound this to a working GPU-PROVIDER.
defun option-value
(arguments option)define-arithmetic-operator or
Logical disjunction of tests and raw truth values.
defun parse-keyword-options
(arguments specs)define-arithmetic-operator =
Test whether two compatible scalars are equal.
defun print-values
(values)defun command-eval
(arguments)defun dispatch-command
(command arguments)defun command-block-world
(arguments)defun command-gazetteer
(arguments)defun command-web
(arguments)defun command-lobby
(arguments)defun dispatch-main
(arguments)defun call-with-sdl-main-thread
(function)Call FUNCTION where synchronous SDL canvas work can use the native main thread. On Darwin, a batch Lisp normally evaluates its toplevel form on the process main thread. Opening a canvas from that continuation would let Cocoa replace the continuation with its durable event loop. This boundary moves FUNCTION to a…