This commit adds semi-structured documentation to all osbuild stages and
assemblers. The variables added work like this:
* STAGE_DESC: Short description of the stage.
* STAGE_INFO: Longer documentation of the stage, including expected
behavior, required binaries, etc.
* STAGE_OPTS: A JSON Schema describing the stage's expected/allowed
options. (see https://json-schema.org/ for details)
It also has a little unittest to check stageinfo - specifically:
1. All (executable) stages in stages/* and assemblers/ must define strings named
STAGE_DESC, STAGE_INFO, and STAGE_OPTS
2. The contents of STAGE_OPTS must be valid JSON (if you put '{' '}'
around it)
3. STAGE_OPTS, if non-empty, should have a "properties" object
4. if STAGE_OPTS lists "required" properties, those need to be present
in the "properties" object.
The test is *not* included in .travis.yml because I'm not sure we want
to fail the build for this, but it's still helpful as a lint-style
check.
18 lines
464 B
Python
Executable file
18 lines
464 B
Python
Executable file
#!/usr/bin/python3
|
|
|
|
import json
|
|
import sys
|
|
|
|
STAGE_DESC = "No-op assembler"
|
|
STAGE_INFO = """
|
|
No-op assembler. Produces no output, just prints a JSON dump of its options
|
|
and then exits.
|
|
"""
|
|
STAGE_OPTS = ""
|
|
def main(_tree, _output_dir, options):
|
|
print("Not doing anything with these options:", json.dumps(options))
|
|
|
|
if __name__ == '__main__':
|
|
args = json.load(sys.stdin)
|
|
r = main(args["tree"], args["output_dir"], args.get("options", {}))
|
|
sys.exit(r)
|