Config

Reference documentation for YAML8n’s configuration

Configuration Sources

Configuration is performed using a JSON/Jsonnet configuration file, environment variables, and command line arguments. Configurations from one source will override previous sources, i.e. environment variables override configuration files, command line arguments override environment variables.

Command Line

Every configuration key can be set using -x <a_config_key1>="a value" -x <a_config_key2>="another value", i.e. -x cli_logLevel=debug -x cli_logFormat=kv. Config values can also be set using JSON, i.e. -x cli='{"logLevel": "debug"}'

Command line values override all other sources.

Environment Variables

Every configuration key can be set using yaml8n_config_key=value, i.e. yaml8n_cli_logLevel=debug. A special environment variable, yaml8n_config can be used to specify a complete JSON/Jsonnet configuration.

Environment Variables override a configuration file.

Configuration File

A configuration file be formatted using JSON or Jsonnet. Underscores in config keys are used to represent nesting, i.e. cli_logLevel represents:

{
  "cli": {
    "logLevel": "debug"
  }
}

YAML8n looks for yaml8n.jsonnet by default, ascending the directory tree to find it. See the Jsonnet reference for more information. Configuration files are rendered at startup, allowing you to use dynamic Jsonnet functions to dynamically alter the config, i.e.:

local getRecord(type, name, fallback=null) = std.native('getRecord')(type, name, fallback);
local level = getRecord('txt', 'level.candid.dev');

{
  cli: [
    logLevel: level,
  ],
}

You can view the rendered configuration by running yaml8n config.

Configuration Values

cli

Configurations for the CLI.

cli_configPath

String, path to the configuration file. If a filename without a path is specified, Rot will search parent directories for the filename and use the first one found.

Default: ".jsonnet"

cli_configReloadSec

Number, seconds to periodically reload the config and reload the application, if > 0.

Default: 0

cli_configWatch

Boolean, if true then the configPath will be watched for changes. On a change, the application will be reloaded.

Default: false

cli_logFormat

String, log format to use for logging: human, kv, or raw.

Default: "human"

cli_logLevel

String, log level to use for logging: none, debug, info, or error.

Default: "info"

cli_logMinStatus

Number, the minimum status to log for error messages. Used to additionally filter logLevel error. Status roughly map to HTTP status codes:

  • 400 will capture all client and server errors
  • 500 will capture only server errors

Default: 0

cli_macros

A map of macros to simplify and template CLI arguments. See Macros for more information.

An example macro looks like this:

{
  "cli": {
    "macro": {
      "mymacro": {
        "argumentsRequired": [
          "argument1"
        ],
        "flags": {
          "d": {
            "usage": "D flag usage!"
          },
        },
        "template": "config",
        "usage": "Mymacro usage!",
      }
    }
  }
}

Default: {}

cli_macros_[macro]_argumentsRequired

A list of arguments that are required for the macro.

Default: []

cli_macros_[macro]_argumentsOptional

A list of arguments that are optional for the macro.

Default: []

cli_macros_[macro]_flags

A map of flags for the macro.

Default: {}

cli_macros_[macro]_flags_[flag]_default

A list of strings for the default value of the flag.

Default: []

cli_macros_[name]_flags_[flag]_options

A list of strings the flag can be set to.

Default: []

cli_macros_[name]_flags_[flag]_placeholder

String, the placeholder name for the flag if it accepts a value.

Default: ""

cli_macros_[name]_flags_[flag]_usage

String, the usage instructions for the flag.

Default: ""

cli_macros_[name]_template

String, the Go template syntax that will be rendered, appended to the CLI, and ran. The Go template can use these custom functions:

  • {{ getArg i int f string }}
    Get an argument at position i or return fallback f.
  • {{ getEnv e string f string }}
    Get an environment variable e or return fallback f.
  • {{ getFlag f string }}
    Get the flag values for f. For flags with a placeholder, this will be an array of string values, otherwise it will be a boolean.
  • {{ join s []string sep string }}
    Join array s with separator sep.

Default: []

cli_macros_[name]_usage

String, the usage documentation for a macro.

Default: ""

cli_noPaging

Boolean, disables paging of log output using less.

Default: false

checkCode

String, check/validate a specific language code.

Default: ""

defaultCode

String, the default language code to use if none are set in the translation file. Used to globally set the defaultCode value across multiple translation files or within a monorepo.

Default: ""

failWarn

Boolean, if warnings should cause failures.

Default: false

httpClient

Configurations for the global HTTP client.

httpClient_noSystemCA

Boolean, if true, YAML8n will not use the system certificate authorities. All certificate authorities must be specified using httpClient_tlsCABase64 or httpClient_tlsCAPath or no HTTPS URLs will be trusted.

Default: false

httpClient_tlsCABase64

String, base64 encoded PEM certificate used by YAML8n’s HTTP client to validate HTTPS endpoints. If this or tlsCAPath are not specified, YAML8n will only use the system CA certificates to validate certificates.

Default: ""

httpClient_tlsCAPath

String, path to a PEM certificate used by YAML8n’s HTTP client to validate HTTPS endpoints. If this or tlsCABase64 are not specified, YAML8n will only use the system CA certificates to validate certificates.

Default: ""

httpClient_tlsCertificatesBase64

List of base64 encoded PEM certificate strings used by YAML8n’s HTTP client to perform TLS Client authentication.

Default: ""

httpClient_tlsCertificatesPath

List of path strings to PEM certificates used by YAML8n’s HTTP client to perform TLS Client authentication.

Default: ""

httpClient_tlsKeysBase64

List of base64 encoded PEM key strings used by YAML8n’s HTTP client to perform TLS Client authentication.

Default: ""

httpClient_tlsKeysPath

List of path strings to PEM keys used by YAML8n’s HTTP client to perform TLS Client authentication.

Default: ""

httpClient_tlsCAPath

String, path to a PEM certificate used by YAML8n’s HTTP client to validate HTTPS endpoints. If this or tlsCABase64 are not specified, YAML8n will only use the system CA certificates to validate certificates.

Default: ""

httpClient_tlsSkipVerify

Boolean, configures YAML8n’s HTTP client to skip TLS verification for HTTPS endpoints. Use with caution.

Default: false

httpClient_timeoutDialSec

Number, default seconds to wait for HTTP requests to connect. 0 disables the timeout.

Default: 10

httpClient_timeoutTLSHandshakeSec

Number, default seconds to wait for HTTP requests to negotiate TLS. 0 disables the timeout.

Default: 10

iso639Codes

Map of ISO 639 codes to their pretty name. YAML8n will warn on translations that are missing these codes. Will be used if none are set in the translation file. Used to globally set the iso639Codes value across multiple translation files or within a monorepo.

Default: {}

jsonnet

Configuration toggles for disabling Jsonnet Native Functions. Some of these functions are disabled by default–namely anything that could perform an external call, like running a command, or performing HTTP or DNS requests. These should only be enabled for Jsonnet files you trust, as they could lead to data exfiltration or worse.

jsonnet_disableGetArch

Disable the getArch function.

Default: false

jsonnet_disableGetCmd

Disable the getCmd function.

Default: true

jsonnet_disableGetConfig

Disable the getConfig function.

Default: false

jsonnet_disableGetEnv

Disable the getEnv function.

Default: false

jsonnet_disableGetFile

Disable the getFile function.

Default: false

jsonnet_disableGetFileHTTP

Disable the getFileHTTP function.

Default: true

jsonnet_disableGetOS

Disable the getOS function.

Default: false

jsonnet_disableGetPath

Disable the getPath function.

Default: false

jsonnet_disableGetRecord

Disable the getRecord function.

Default: true

licenseKey

String, the YAML8n license key provided to your organization.

Default: ""

translations

String, the path to a translations YAML file.

Default: ""