bino lint
bino lint validates your report manifests against the schema and runs content lint rules without executing queries or generating PDFs.
This is useful for quick validation during development or in CI pipelines.
bino lint [flags]Common flags:
--work-dir– report bundle directory (default:.).--out-dir– output directory for lint logs (default:dist).--lint-log-format– lint log file format:text(default) orjson.--execute-queries– execute dataset queries and validate data (slower but catches data issues).--fail-on-warnings– exit with non-zero code if any warnings are found (useful for CI).
No lint finding fails the command on its own, whatever severity it reports — only a rule you re-grade to "error" in bino.toml does, see Lint rules.
Examples
Section titled “Examples”Lint all manifests in the current directory:
bino lintLint a specific project:
bino lint --work-dir ./reportsOutput JSON log for CI integration:
bino lint --lint-log-format jsonExecute queries and validate data:
bino lint --execute-queriesDeep validation with --execute-queries
Section titled “Deep validation with --execute-queries”By default, bino lint only validates manifest structure without executing queries. When you need to validate actual data, use the --execute-queries flag:
bino lint --execute-queriesThis will:
- Execute all DataSet queries
- Validate query results against the DataSet schema
- Report data validation warnings alongside lint findings
Data validation checks include:
- Type validation (strings vs numbers)
- Enum validation (
operationmust be"+"or"-") - Date format validation (ISO 8601)
- Dependent required fields (e.g.,
rowGrouprequiresrowGroupIndex)
Note: --execute-queries is slower than regular lint because it runs actual queries. Use it when you need to verify data correctness, not just manifest structure.
Exit code
Section titled “Exit code”bino lint exits with code 0 unless one of the following holds. The command
checks them in this order:
| Condition | Suppressible via [lint]? |
|---|---|
The engine-version pin is incompatible with this CLI | Yes — disable = ["engine-version-incompatible"] turns the check off |
| Manifests failed to load or failed schema validation | No — disable hides the individual lines, the command still fails |
A rule you raised with [lint.severity] to "error" produced a finding | n/a — this is the opt-in |
--fail-on-warnings and any remaining finding or data validation warning | Findings you lowered to "info" do not count |
The [lint] table lives in bino.toml; see
Lint rules for the full
semantics. Without that table, nothing but the first two rows and
--fail-on-warnings can fail the command, exactly as before. bino build is
not affected by [lint] at all: it prints the findings that survive disable,
but no finding has ever failed a build.
Use --fail-on-warnings to exit with code 1 if any warnings are found:
# CI-friendly: fail if there are any lint or data validation warnings
bino lint --execute-queries --fail-on-warningsIntegration with build and preview
Section titled “Integration with build and preview”By default:
bino buildruns lint rules automatically. Use--no-lintto skip.bino previewdoes not run lint rules. Use--lintto enable.
See also
Section titled “See also”- Lint rules – reference of all available lint rules.
- bino build – build reports (includes lint by default).
- bino preview – preview reports with optional lint.