commands.json

commands.json files define how subcommands are executed by the ./wpt command. wpt searches all command.json files under the top directory and sets up subcommands from these JSON files. A typical commands.json would look like the following:

{
  "foo": {
    "path": "foo.py",
    "script": "run",
    "parser": "get_parser",
    "help": "Run foo"
  },
  "bar": {
    "path": "bar.py",
    "script": "run",
    "virtualenv": true,
    "requirements": [
      "requirements.txt"
    ]
  }
}

Each key of the top level object defines a name of a subcommand, and its value (a properties object) specifies how the subcommand is executed. Each properties object must contain path and script fields and may contain additional fields. All paths are relative to the commands.json.

path

The path to a Python script that implements the subcommand.

script

The name of a function that is used as the entry point of the subcommand.

parser

The name of a function that creates an argparse parser for the subcommand.

parse_known

When True, parse_known_args() is used instead of parse_args() for the subcommand. Default to False.

help

Brief description of the subcommand.

virtualenv

When True, the subcommand is executed with a virtualenv environment. Default to True.

requirements

A list of paths where each path specifies a requirements.txt. All requirements listed in these files are installed into the virtualenv environment before running the subcommand. virtualenv must be true when this field is set.

conditional_requirements

A key-value object. Each key represents a condition, and value represents additional requirements when the condition is met. The requirements have the same format as requirements. Currently “commandline_flag” is the only supported key. “commandline_flag” is used to specify requirements needed for a certain command line flag of the subcommand. For example, given the following commands.json:

"baz": {
  "path": "baz.py",
  "script": "run",
  "virtualenv": true,
  "conditional_requirements": {
    "commandline_flag": {
      "enable_feature1": [
        "requirements_feature1.txt"
      ]
    }
  }
}

Requirements in requirements_features1.txt are installed only when --enable-feature1 is specified to ./wpt baz.