$ dhall-c/cli

The dhall CLI

A single APE binary with five evaluation modes.

Usage

// dhall <mode> [file|-]
dhall typecheck [file|-]   # infer the type of an expression
dhall normalize [file|-]   # print the normal form
dhall to-json   [file|-]   # evaluate to JSON
dhall to-toml   [file|-]   # evaluate to TOML (top level must be a record)
dhall to-yaml   [file|-]   # evaluate to YAML (block style, 1.2 core schema)
dhall --help | -h          # print usage and exit 0
dhall --version | -V       # print the version and exit 0

Input is read from a file or stdin. Exit codes: 0 ok, 1 type error, 2 parse/lex error, 3 internal/IO/serialize error. Type errors report Error: <msg> (at <file>:<line>:<col>).

Imports: local file ./file, env:NAME, and http:// URLs. URL imports are SSRF-safe and require a mandatory sha256: hash.

Build

// driven by dhake
# build the native APE + run the full suite
$ dhake
$ dhake test    # run.sh + roundtrip.sh + examples.sh + cli.sh
$ dhake bench   # in-process benchmark

Requires cosmocc (Cosmopolitan toolchain) and the dhake binary. Every compile target pins verified-build sha256 hashes for its source deps and output.