teaql-cli
Rust CLI for TeaQL code generation workflows.
Commands
CLI flags
Directory vs Single File Upload
When a directory is provided as input, cargo-teaql will normally compress it into a zip archive. The server expects exactly one file in the zip to be named main.xml to serve as the entry point.
However, if a directory is provided but it does not contain a main.xml, the CLI will search for a single .xml or .ksml model file. If it finds exactly one such file, it will bypass compression and upload that single file directly. Single-file uploads do not require the name main.xml. If multiple files are found and no main.xml is present, the CLI will abort with an error.
Symlink aliases
If you create symlink aliases to the same binary, these names also work:
Install the aliases automatically:
This creates these symlinks next to the current executable:
You can also target a custom directory with cargo-teaql install-links --dir /some/bin --force.
gen-model sends scope=frontend to the service.
gen-workspace sends scope=rust-workspace.
Configuration
Precedence (highest wins)
CLI flag > Environment variable > config.yml > Built-in default
Environment variables
| Env var | Config key | Description |
|---|---|---|
TEAQL_ENDPOINT_PREFIX |
endpoint_prefix |
TeaQL service endpoint prefix |
TEAQL_LICENSE_FILE |
license_file |
License file path |
TEAQL_BUILD_DIR |
build_dir |
Output directory |
TEAQL_TIMEOUT_SECONDS |
timeout_seconds |
HTTP timeout in seconds |
TEAQL_SERVICE_URL is still accepted for compatibility, but new
configuration should use TEAQL_ENDPOINT_PREFIX.
Config file
Local config lives in ~/.teaql/config.yml.
endpoint_prefix: https://api.teaql.io/latest/
license_file: /path/to/your.LICENSE # optional — bundled public.LICENSE used if omitted
build_dir: build
timeout_seconds: 300
The endpoint prefix is combined with service methods. For example, generation
uses https://api.teaql.io/latest/generate, and cargo-teaql version uses
https://api.teaql.io/latest/version.
Source tracking
At startup, the CLI prints where each effective config value came from:
config (precedence: cli > env > config.yml > default):
endpoint_prefix = https://api.teaql.io/latest/ (from: environment variable)
license_file = /home/user/.teaql/license (from: ~/.teaql/config.yml)
build_dir = /workspace/build (from: built-in default)
timeout_seconds = 300 (from: ~/.teaql/config.yml)