Skip to main content

Module schema_compose

Module schema_compose 

Source
Expand description

Compose the top-level JSON Schema for a whole faucet.yaml config (#213).

faucet schema source <name> already emits per-connector schemas, but there was no single schema for the entire config document. This module builds one by taking the derived PipelineConfig schema (which covers version / name / pipeline / matrix / execution / auth / vars / params / schedule / lineage / quality / dlq / … — every block whose type derives JsonSchema) and layering per-connector discrimination on top: the source / sink positions become a oneOf over the compiled-in connector kinds, each branch pinning type: <kind> and embedding that connector’s own config schema.

Editors (the VS Code YAML extension, JetBrains) consume the emitted schema for autocomplete, inline docs, and as-you-type validation via a # yaml-language-server: $schema=… header.

Interpolation tolerance. faucet configs pervasively use ${env:…} / ${vars:…} / ${now.*} placeholders — a string standing in for a typed value. So every embedded connector-config subtree is relaxed: required is dropped, additionalProperties is opened, and every declared scalar type also accepts a string. This keeps property/description autocomplete while never rejecting a valid-but-interpolated config. The strict top-level grammar (unknown-key rejection, version, block shapes) is preserved.

Functions§

config_schema
Build the composed top-level config schema.