Command line#
scenet [--version] <command> [options]
Two commands: build compiles a document, schema emits the JSON Schema. A bare
scenet prints help to stderr and exits 2 — it did nothing, and a script chaining off
its status should not read that as success.
scenet build#
scenet build SOURCE [-o OUTPUT] [--core] [--debug] [--live-text] [--strip] [--quiet]
Compiles SOURCE to SVG. The frontend is chosen by extension:
Extension |
Read as |
|---|---|
|
YAML — single panel or a |
|
Comic script |
Options#
-o,--output PATHWhere to write. Defaults to the source’s name with an
.svgextension, alongside it. Note thatduel.panel.yamlbecomesduel.svg, notduel.panel.svg.--coreAlso write the resolved Panel Core as JSON — every coordinate the compiler chose, in a format you can read, diff and hand-edit. See Panel Core.
--debugAlso write a diagnostic overlay showing the geometry the solver was working against: silhouette hulls, face exclusion zones, named anchors, gaze vectors and tail routes. This is usually the fastest way to see why a panel came out the way it did.
--live-textEmit selectable
<text>elements instead of glyph outlines. Smaller files and selectable text, but the result depends on the reader having a metrically compatible font installed. The default emits outlines, which makes the file genuinely self-contained.--stripFor a multi-panel document, also lay every panel out side by side in reading order, as one extra file. Ignored for a single panel.
--quietSuppress the
wroteandnote:lines. You do not normally want this: the notes are where the compiler tells you it did something you did not ask for.
Output naming#
A single-panel document writes to the requested name. A multi-panel document suffixes each panel with its own name, so the mapping back to the source stays obvious:
sequence.scene.yaml → sequence.establishing.svg
sequence.reaction.svg
sequence.strip.svg (with --strip)
Exit status#
Code |
Meaning |
|---|---|
0 |
Compiled |
1 |
The document could not be compiled — reported as a plain message, not a traceback |
2 |
Usage error, or the source file does not exist |
Every error the compiler raises inherits ScenetError, and all of them mean “your panel
cannot be compiled” rather than “scenet broke”. They print as one line. A traceback from
scenet is a bug worth reporting.
Examples#
scenet build examples/duel.panel.yaml
scenet build examples/duel.panel.yaml --core --debug
scenet build examples/sequence.scene.yaml --strip
scenet build examples/umbrella.script --strip -o out/umbrella.svg
scenet schema#
scenet schema [-o OUTPUT] [--scene]
Emits the JSON Schema for a panel document, derived from the same pydantic models the compiler validates against. Editors use it for completion and inline validation, so what the editor suggests cannot drift from what compiles — see editor support.
-o,--output PATHWrite to a file instead of stdout.
--sceneEmit the multi-panel scene schema instead of the single-panel one. A scene allows the same keys as a panel — where they act as defaults every panel inherits — plus
panels:, whose members may additionally carryover:.
scenet schema -o panel.schema.json
scenet schema --scene -o scene.schema.json
The output is sorted and indented, so it is stable under version control.
scenet --version#
Prints the installed version and exits 0.
Determinism#
The same input always produces byte-identical output — no wall-clock time, no unseeded
randomness, no absolute paths in the output. Two runs on different machines produce files
you can compare with cmp.