rune lint
lint is your “pre-flight check.” Run it in CI. Run it before cast. It catches schema errors, typos, and common mistakes early.
Both YAML and TOML are accepted — lint routes by extension, so rune lint /etc/rune/runefile.toml works the same as the YAML form.
Examples
Section titled “Examples”# Single file (YAML or TOML)rune lint myservice.yamlrune lint /etc/rune/runefile.toml
# Recurse into a directoryrune lint ./manifests --recursive
# JSON for CIrune lint examples/config/rune.yaml --format json
# Auto-fix simple issuesrune lint manifests/ --recursive --fix
# Bail on first failurerune lint manifests/ --recursive --exit-on-failWhat it validates
Section titled “What it validates”- Schema — every required field present, types correct, enums valid.
- DNS-1123 names — services, secrets, configmaps, namespaces.
- Resource references —
secretMounts.secretNamepoints to something defined or already in the cluster. - Cron expressions (planned) on jobs.
- CORS policies — at least one allowed origin if specified.
- Dependency cycles — detected and rejected.
- Runefile fields — for server configs, addresses are well-formed, paths exist, etc.
It tells the difference between a runefile and a service spec by content, not filename.
| Flag | Default | Notes |
|---|---|---|
-r, --recursive | false | Recurse into directories. |
--format <fmt> | text | text or json. |
--context <n> | 1 | Lines of context shown around errors. |
--expand-context | false | Equivalent to --context=3. |
--quiet | false | Errors only — no progress or success messages. |
--exit-on-fail | false | Stop at first failure. |
--fix | false | Attempt safe auto-fixes (whitespace, defaults). |
--strict | false | Reserved for stricter rules. |
rune lint manifests/ --recursive --format=json --exit-on-failNon-zero exit on any failure. Pipe to jq to extract structured errors for build annotations.