Toolchains

The commands available for toolchains are:

$ beat toolchains --help
Usage: beat toolchains [OPTIONS] COMMAND [ARGS]...

  toolchains commands

Options:
  -h, -?, --help  Show this message and exit.

Commands:
  check    Checks a local asset for validity.
  create   Creates a new local asset.
  diff     Shows changes between the local asset and the remote version...
  draw     Creates a visual representation of the toolchain
  edit     Edit local asset file Example: $ beat <asset_type> edit xxx
  fork     Forks a local asset Example: $ beat <asset_type> fork xxx yyy
  list     Lists the assets of this type available on the platform.
  path     Displays local path of asset files Example: $ beat <asset_type>...
  pull     Downloads the specified toolchains from the server.
  push     Uploads asset to the server Example: $ beat algorithms push...
  rm       Deletes a local asset (unless --remote is specified) Example: $...
  status   Shows (editing) status for all available items of asset type...
  version  Creates a new version of an existing asset Example: $ beat...

For instance, a list of the toolchains available locally can be obtained as follows:

$ beat toolchains list

A list of the toolchains available on the remote platform can be obtained by running the following command:

$ beat toolchains list --remote

How to check that a toolchain is correctly declared?

To check that a toolchain declaration file is correctly written, the command line tool can be used.

For example, we check a correct file (found in src/beat.core/beat/core/test/toolchains/integers_addition.json):

$ beat --prefix=src/beat.core/beat/core/test/ toolchains check \
  integers_addition
The toolchain is executable!

Here, the --prefix option is used to tell the scripts where all our data formats, toolchains and algorithms are located, and integers_addition is the name of the toolchain we want to check (note that we don’t add the .json extension, as this is the name of the toolchain, not the filename!).

Now we check a file that isn’t a correctly formatted JSON file:

src/beat.core/beat/core/test/toolchains/invalid/invalid.json:

{
    "invalid": true,
}
$ beat --prefix=src/beat.core/beat/core/test/ toolchains check invalid/invalid
The toolchain isn\'t valid, due to the following errors:
    Failed to decode the JSON file \'beat/src/beat.core/beat/core/test/toolchains/invalid/invalid.json\':
        Expecting property name enclosed in double quotes: line 3 column 1 (char 23)

Here we are told that something is wrong JSON-wise around the line 3, column 1 of the JSON file. The error is the , (comma) character: in JSON, the last field of an object ({}) or the last element of an array ([]) cannot be followed by a comma. This is the corrected version:

{
    "invalid": true
}

Also note that since we tell the script that all our toolchain declaration files are located in src/beat.core/beat/core/test/toolchains/, the subfolders in that location are considered as part of the name of the data formats they contains (like here invalid/invalid).

As a last example, here is the result of the script when the toolchain references unknown inputs and outputs (see the following sections for explanations about the content of the declaration file):

src/beat.core/beat/core/test/toolchains/invalid/empty_blocks_list.json:

{
    "blocks": [],
    "databases": [ {
            "name": "integers",
            "outputs": {
                "values": "single_integer"
            }
        }
    ],
    "connections": [ {
            "from": "integers.values",
            "to": "echo.in"
        }
    ],
    "results": [
        "echo.out"
    ]
}
$ beat --prefix=src/beat.core/beat/core/test/ toolchains check invalid/empty_blocks_list
The toolchain isn\'t valid, due to the following errors:
    Unknown inputs: echo.in
    Unknown result outputs: echo.out