check
engine-dmo check: The CI gate: validate config, schema, templates and the deployment. Exit 3 on invalid configuration. Every subcommand, argument and flag.
The CI gate: validate config, schema, templates and the deployment. Exit 3 on invalid configuration.
engine-dmo check [flags] | Flag | Type | Default | Meaning |
|---|---|---|---|
--contract-report | bool | list template usage the next contract version removes, each with its replacement | |
--fix | bool | write an id for every element without one, keeping comments, then check | |
--no-db | bool | skip checks that need a database | |
--strict | bool | promote warnings to errors |
--json prints the command’s own JSON document. Runs in a project.
See The development loop and Configuration and secrets. --no-db also accepts an unset variable in a secret path, so CI and image builds need no secrets.
Reading the output
Every problem is printed with its file, line and column, then a summary line such as 0 errors, 0 warnings. Configuration is valid. The exit code follows the errors: 0 when there are none, 3 when there is one.
The summary does not count template warnings
Warnings about templates (a layout with no head(), a missing t() string) are printed above the summary but are not counted in it, and --strict does not promote them: a project with template warnings still ends 0 errors, 0 warnings and exits 0. Read every printed line, not only the summary. A fresh starter project shows one such warning, for its placeholder layout.
--strict makes the warnings the summary counts (such as server.admin_path being /admin) fail the check: the summary still reads 0 errors, 1 warning., and the exit code is 3.
Two quirks of the output: a problem in endpoints.yaml, and a missing t() string in a component, are reported at column 0 (endpoints.yaml:2:0), so go by the line; and a template error may be printed twice, in two formats, which is one problem, not two.
--fix writes an id for every configuration element that has none. It accepts any well-formed id already in a file, including one typed by hand, so the rule that ids are written only by --fix and the dev verbs is yours to keep: never write or copy an id yourself.
Some mistakes are found only when a page renders, not by check: a query on a field that is not indexed, a field read on a loop variable or a component prop, and a required component slot left out. Render the pages that use them with render before you deploy.