add options to configure pyscript interpreter

This commit is contained in:
Jean-Marie 'Histausse' Mineau 2026-06-03 00:24:20 +02:00
parent 25cb9c6403
commit 84bf7ce78c
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
2 changed files with 28 additions and 6 deletions

View file

@ -1,6 +1,8 @@
#let state-use-pyscript = state("state-use-pyscript", false)
#let state-pyscript-version = state("state-pyscript-version", none)
#let state-pyscript-headers = state("state-pyscript-headers", (:))
#let state-pyscript-interpreters = state("state-pyscript-interpreters", (:))
#let state-pyscript-default-interpreter = state("state-pyscript-default-interpreter", none)
#let get-pep723(script) = {
script.find(regex(
@ -39,27 +41,41 @@
"run", default: true
) {
state-use-pyscript.update(x => true)
context {
let config = metadata.at("tool", default: (:)).at("pyscript", default: (:))
let pyscript-config = (:)
// Package dependencies
if "dependencies" in metadata {
pyscript-config.insert("packages", metadata.at("dependencies"))
}
// Files stetup
if "files" in config {
pyscript-config.insert("files", config.at("files"))
}
// Interpreteur selection
if "interpreter" in config {
pyscript-config.insert("interpreter", config.at("interpreter"))
} else if state-pyscript-default-interpreter.final() != none {
assert(
state-pyscript-default-interpreter.final() in state-pyscript-interpreters.final(),
message: state-pyscript-default-interpreter.final() + " is not in pyscript-interpreters",
)
pyscript-config.insert("interpreter", state-pyscript-interpreters.final().at(state-pyscript-default-interpreter.final()))
}
let attrs = (
type: "py"
)
if pyscript-config != (:) {
attrs.insert("config", json.encode(pyscript-config))
}
if true {
if true { // TODO: pygame ?
attrs.insert("terminal", "")
attrs.insert("worker", "")
}
if pyscript-config != (:) {
attrs.insert("config", json.encode(pyscript-config))
}
let script = it.text;
if config.at("repl", default: false) {
script = "import code\n" + script + "\ncode.interact(banner='', local=globals())"
@ -103,7 +119,7 @@
attrs: attrs,
script
)
} else {
}} else {
it
}
//raw(block: true, lang: "json", json.encode(metadata))