Skip to main content

Crate treease_cli

Crate treease_cli 

Source
Expand description

§treease-cli

treease-cli evaluates, transforms, formats, converts, and previews structured documents from the terminal. It uses the same Treease core as the Web workspace and is designed for JSON, YAML, TOML, CSV, and other supported structured formats.

§Installation

Install the latest published CLI with Cargo:

cargo install treease-cli

Check the installed version and the complete generated help with:

treease --help
treease help --format json

§Basic usage

The first positional argument is a Treease expression. The optional final argument is an input file; when it is omitted, Treease reads standard input.

# Read a nested value from a YAML file.
treease '.services.api.url' config.yaml

# Read JSON from stdin and convert the result to YAML.
cat response.json | treease -o yaml '.'

# Select an input format and an output format explicitly.
treease -p yaml -o json '.' config.yaml

# Evaluate an expression without an input document.
treease --null-input '.hello = "world"'

# Write a result back to one input file.
treease --inplace '.version = "2"' package.json

The default expression is .. It returns the complete input document.

§Input and output options

OptionDescription
-p, --input-format FORMATSet the input format explicitly.
-o, --output-format FORMATSet the output format explicitly.
-P, --prettyPrintPretty-print the output.
-I, --indent INDENTSet the output indentation width.
-r, --unwrapScalarPrint scalar results without a document wrapper.
-N, --no-docDisable YAML document separators.
-i, --inplaceWrite the result back to the input file. Requires exactly one file.
-n, --null-inputEvaluate without reading a file or standard input.
-e, --exit-statusExit with status 1 when the result is empty, null, or false.

Use treease formats list to inspect the formats available in the installed build. Use -p or -o when the file extension is missing or does not describe the actual content.

§Web graph view

treease web evaluates one input document and opens a readonly Treease graph view for the selected result:

treease web '.services.api' config.yaml
treease web '.' -

The command accepts one file path or - for standard input. It starts a short-lived localhost data service and opens the configured Treease Web URL. The Web graph view is readonly; use the normal treease command when the result needs to be written or further transformed in the terminal.

§Operator and format discovery

The CLI exposes machine-readable discovery commands so scripts and tools can inspect the installed capability set without duplicating the registry:

treease operators list
treease operators list --category string
treease operators get select
treease operators search map

treease formats list
treease formats get yaml

Add --format json to commands that support it:

treease operators list --format json
treease formats list --format json

§Common expression patterns

# Traverse a path.
treease '.services.api' config.yaml

# Select matching values.
treease '.users[] | select(.active == true)' users.json

# Convert a selected value.
treease -o yaml '.deployment' config.json

# Update a value in place.
treease --inplace '.metadata.version = "2026.07"' manifest.yaml

Use treease operators list and treease operators get NAME for the installed operator summaries, syntax, examples, and limitations.

§Structured metadata

The command specification, operator catalog, and format catalog are exported from the same source used by the CLI help output:

treease help --format json
treease operators list --format json
treease formats list --format json

This keeps generated documentation and tooling metadata aligned with the actual parser and runtime capabilities.

§Error handling

Errors are written to standard error and the process exits with status 1. Use the command-specific help and discovery commands shown above when an expression, format, operator, or input path is rejected.

§Local verification

cd apps/cli
cargo nextest run --locked --lib
bash tests/acceptance/run.sh
cargo doc --no-deps --lib