harness
Tool
tools/live/harness.py(program, The running game). Put together the modules a game needs to run: a runtime, and a layer for each need it lists.
Run it with ./gameframe run harness ARGS or python3 tools/live/harness.py. Source on GitHub.
Its own help
This is the help text in the tool itself, as ./gameframe tool harness prints it.
text
Put together the modules a game needs to run: a runtime, and a layer for each need it lists.
Usage:
harness.py plan PATH ... [--runtime ID] [--with ID ...] [--script FILE] [--json] [--no-cpu]
harness.py modules [--json]
harness.py show ID
harness.py check
plan run tools/triage/needs.py on PATH (an executable, a folder or a disc image), choose
a runtime module and the layer modules, and print the plan: each module, the needs
it covers, and the needs no module covers
--runtime the runtime to use (default: the one that covers the most needs)
--with add a module the analyser cannot ask for, such as silent-audio (repeat it)
--script write every chosen module's Set up steps, in order, as one bash script. Nothing is
run: read the script, set its variables, then run it
modules list every module: GameFrame's docs/harness/modules/, then the project's own
(a project module with the same id replaces GameFrame's)
show print one module
check check every module: id, kind, needs, runtimes, requires and sections
A module is a Markdown file with front matter (docs/harness/README.md): id, kind (runtime or
layer), runtime, provides, requires, vars, seen. Its "Set up" section holds bash blocks.
The plan picks the runtime first. A runtime module is scored by the needs it covers, and a
layer that works in it counts too. Then, for each need still open, it adds the layer that
covers the most open needs, with the modules it requires. Needs of kind packer and unknown
are shown and never matched. A need with no module is a gap: write a module for it from
docs/harness/modules/_template.md, or look for known failures with `gameframe advise`.
Exit code: 0 when every need is covered, 1 when some are not.
What it does not do: run anything, download anything, or prove that a module works for this
game. The script is a draft to read.