light_mode
dark_mode

Boomack Client CLI

The command for the Boomack Client CLI is boom. The command is currently implemented in two programming languages, each with its own advantage.

The NodeJS version precedes the Rust version and is implemented in JavaScript for the NodeJS runtime environment. Its advantage is, that it can be used everywhere where NodeJS can be installed.

Because the NodeJS engine takes some time to start up and parse all source files, it can be too slow for some scenarios with high update frequencies. Therefore, as an alternative the Boomack Client CLI was implemented a second time in Rust.

Rust is a relatively new language developed by the Mozilla foundation as a safer alternative for C/C++. The Rust implementation is a statically linked binary with much better performance then the JavaScript implementation. It needs less memory and is as fast as the usual CLI tools on the shell.

The Rust implementation is now the default Boomack Client CLI and is included in the Windows installer.

Basic Options

Commands

boom display

Display an hyper-media item in a slot of a Boomack panel.

Options

If the options --string, --file, and --url are used together, only one of them is used: --file is overruling --url and --string is overruling --file and --url.

Auto Detection of Content and Type

If none of the three options --string, --file, and --url is given, the content is detected automatically by the following rules.

If a non-option argument exists, its value is used as the content to display; Otherwise, the content is read from STDIN as if -f - was used.

  1. if it starts with http:// or https:// it is used as URL and the resource from the URL is displayed
  2. if it is a valid data URL data:[<mediatype>][;base64],<data>, its content is displayed
  3. if it is a valid file path and the file exists, the content of the file is displayed

If --type is not given and MIME type is detected from the path/URL or content:

  1. if a file path or an URL is given, the filename is used to detect the MIME type
  2. if a URL is given and the path does not contain a known filename (extension), a HEAD request is issued against the URL to determine the content type of the response
  3. if the content of a string starts with < and ends with >, it is displayed as text/html
  4. otherwise it is displayed as plain text or download

If the filename is used to detect the MIME type, the configuration property client.types is used to map from filename patterns / extensions to MIME types.

boom eval

Evaluate JavaScript code in a panel.

This evaluation is volatile, which means it is executed in all Browsers, which currently show the target panel. But the code is not persisted in any way.

boom panel

Manage panels and change the layout of a panel.

Used without specified sub-command uses implicitly ls as sub-command.

Sub-Commands

Export Options

boom slot

Clear or export individual slots.

Sub-Commands

Export Options

boom preset

Manage prepared options.

Used without specified sub-command uses implicitly ls as sub-command.

Sub-Commands

boom type

Manage media types.

Used without specified sub-command uses implicitly ls as sub-command.

Sub-Commands

boom action

Manage actions.

Used without specified sub-command uses implicitly ls as sub-command.

Sub-Commands

boom export

Export individual slots, one, or multiple panels as static HTML to the server filesystem.

Used without specified sub-command uses implicitly all as sub-command.

Sub-Commands

Export Options

Configuration

The configuration of the Boomack Client CLI consists of the following parts:

The configuration is merged from a couple of different sources, listed from highest to lowest priority:

  1. Command line switches
  2. Environment variables
  3. Explicit configuration files
  4. Implicit configuration files
  5. Default configuration

Command Line Switches

The following command line switches impact the configuration:

Environment Variables

The following environment variables are supported:

Hint: The variable BOOMACK_SERVER_URL has priority over the variables BOOMACK_SERVER_HOST and BOOMACK_SERVER_PORT.

Configuration Files

Configuration files for the Boomack Client CLI are picked up implicitly from some places, and can additionally be specified explicitly with the command line switch --config <filename>.

The following implicit configuration files are considered in that order:

The config files in the current working directory and the user profile can have no filename extension or one of the following: .json, .yaml, .yml. And they are looked up in that order. Meaning, if a file boomack in the current working directory exists, another file with name boomack.yaml will be ignored.

Note: The configuration files of the Boomack Server and the Boomack Client CLI are compatible in that regard, that the client can read host and port for the API URL from the server configuration, and the server ignores everything under the property client. As a result a boomack-server[.json|.yaml|.yml] config file in the current working directory can configure both, server and client.

Default Configuration

The default client configuration looks like this:

YAML
JSON
server:
  host: localhost
  port: 3000
  url: null  # if set, takes precedence over host and port
client:
  token: null
  timeout: 10000  # in milliseconds
  retry: 0
  format: text/plain  # text/plain, application/json, text/html
  types:  # mapping from filename patterns to media types
    '*.txt': 'text/plain'
    '*.md': 'text/markdown'
    '*.csv': text/csv'
    '*.tsv': 'text/tsv'
    '*.vega': 'application/x-vega-spec'
    '*.vegalite': 'application/x-vega-lite-spec'
    'Dockerfile': 'text/x-dockerfile'
    'makefile': 'text/x-makefile'
    ...
{
  "server": {
    "host": "localhost",
    "port": 3000,
    "url": null
  },
  "client": {
    "token": null,
    "timeout": 10000,
    "retry": 0,
    "format": "text",
    "types": {
      "*.txt": "text/plain",
      "*.md": "text/markdown",
      "*.csv": "text/csv'",
      "*.tsv": "text/tsv",
      "*.vega": "application/x-vega-spec",
      "*.vegalite": "application/x-vega-lite-spec",
      "Dockerfile": "text/x-dockerfile",
      "makefile": "text/x-makefile",
      ...
    }
  }
}
Hint: If the server URL is not given on any level of the configuration, the server host and port are used with the http:// protocol to build the API base URL.