Skip to content

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.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.