Merge commit '49b5e80' into lang/foundations
This commit is contained in:
commit
e74656c372
38 changed files with 1986 additions and 16 deletions
|
|
@ -48,7 +48,7 @@ program LudicDev {
|
|||
print("which ships to users and carries none of the below.")
|
||||
print("")
|
||||
print("build:")
|
||||
print(" build build the whole toolchain into bin/ (ludicc, ludic, ludic-dev, ludic-fmt, ludic-lsp)")
|
||||
print(" build build the whole toolchain into bin/ (ludicc, ludic, ludic-dev, ludic-fmt, ludic-lsp, ludic-ui-preview)")
|
||||
print(" build-cli build just bin/ludicc from the IR seed")
|
||||
print(" tools [--install] [--test] build the editor toolchain (ludic-fmt, ludic-lsp)")
|
||||
print(" clean remove build/")
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ program Ludic {
|
|||
import "scripts.ludic"
|
||||
import "deps.ludic"
|
||||
import "schema.ludic"
|
||||
import "ui_preview.ludic"
|
||||
import "testpar.ludic"
|
||||
import "migrate.ludic"
|
||||
|
||||
|
|
@ -78,6 +79,7 @@ program Ludic {
|
|||
print(" doctor check that the install is complete and usable")
|
||||
print(" fmt [--check] [paths...] format Ludic source in place (--check: report, write nothing)")
|
||||
print(" lsp run the language server on stdio (what editors spawn)")
|
||||
print(" ui-preview [--font DIR] preview a game's ludic.ui components for a studio, on stdio")
|
||||
print(" help this message")
|
||||
print("")
|
||||
print("package scripts (package.ludic):")
|
||||
|
|
@ -110,6 +112,7 @@ program Ludic {
|
|||
if (cmd == "clean") { return cmd_clean() }
|
||||
if (cmd == "fmt") { return cmd_fmt() }
|
||||
if (cmd == "lsp") { return cmd_lsp() }
|
||||
if (cmd == "ui-preview") { return cmd_ui_preview() }
|
||||
if (cmd == "doctor") { return cmd_doctor() }
|
||||
if (cmd == "upgrade") { return cmd_upgrade() }
|
||||
if (cmd == "script") { return cmd_script() }
|
||||
|
|
|
|||
|
|
@ -324,7 +324,7 @@ function build_artifacts(ver: pointer) -> bool {
|
|||
let name = `ludic-{ver}-{plat}-{arch}`
|
||||
let stage = `{tmp_dir()}/{name}`
|
||||
shell(`rm -rf {stage} && mkdir -p {stage}/bin`)
|
||||
if not shq(`cp bin/ludic bin/ludicc bin/ludic-fmt bin/ludic-lsp {stage}/bin/`) {
|
||||
if not shq(`cp bin/ludic bin/ludicc bin/ludic-fmt bin/ludic-lsp bin/ludic-ui-preview {stage}/bin/`) {
|
||||
err("release: the toolchain is not built (run: ludic-dev build)\n")
|
||||
return false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,9 @@ function cmd_dev_build() -> int {
|
|||
if not build_tool("ludic-fmt", "tools/ludic-tools/fmt.ludic") { return 1 }
|
||||
print("ludicc: tools/ludic-tools/lsp.ludic -> bin/ludic-lsp")
|
||||
if not build_tool("ludic-lsp", "tools/ludic-tools/lsp.ludic") { return 1 }
|
||||
print("ludicc: tools/ui-preview/main.ludic -> bin/ludic-ui-preview")
|
||||
if not build_tool("ludic-ui-preview", "tools/ui-preview/main.ludic") { return 1 }
|
||||
sync_vscode_grammar()
|
||||
print("done. toolchain in bin/ (ludicc, ludic, ludic-dev, ludic-fmt, ludic-lsp)")
|
||||
print("done. toolchain in bin/ (ludicc, ludic, ludic-dev, ludic-fmt, ludic-lsp, ludic-ui-preview)")
|
||||
return 0
|
||||
}
|
||||
|
|
|
|||
19
tools/ludic-cli/ui_preview.ludic
Normal file
19
tools/ludic-cli/ui_preview.ludic
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# ---- ludic ui-preview ---------------------------------------------------------
|
||||
# A game's ludic.ui components previewed for a studio over stdio: ludic.ui with a backend that
|
||||
# records its draw calls, and component classes the studio describes. No game code, no GPU, no
|
||||
# network. The studio spawns it; tools/ui-preview/protocol-v1.md is the contract.
|
||||
#
|
||||
# ludic ui-preview [--font DIR] the host, on stdin and stdout
|
||||
function cmd_ui_preview() -> int {
|
||||
var args = ""
|
||||
var ai = 2
|
||||
while ai < arg_count() {
|
||||
args = `{args} {sh_single(arg(ai))}`
|
||||
ai += 1
|
||||
}
|
||||
let bin = `{ludic_home()}bin/{exe_name("ludic-ui-preview")}`
|
||||
if is_exec(bin) { return sh(`exec {sh_single(bin)}{args}`) }
|
||||
if capture_line(`command -v {exe_name("ludic-ui-preview")} 2>/dev/null`) != "" { return sh(`exec {exe_name("ludic-ui-preview")}{args}`) }
|
||||
err("ludic ui-preview: no bin/ludic-ui-preview in this install (a checkout builds it with: ludic-dev build)\n")
|
||||
return 1
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue