ajv-cli icon indicating copy to clipboard operation
ajv-cli copied to clipboard

Multiple YAML documents per file / NDJSON

Open robbat2 opened this issue 1 year ago • 0 comments

Nobody else seems to have discussed this, but it seems to be impossible ajv-cli to validate YAML files that contain multiple documents. My underlying goal is replacing RoadieHQ/backstage-entity-validator with more pure AJV, because BEV does not permit passing many of the AJV options.

The validator seems to throw strange errors

error:  Invalid left-hand side expression in prefix operation
error:  Unexpected identifier 'REDACTED-INTERNAL-STRING'
error:  Unexpected token 'for'

I don't want to split the documents up into multiple files because I'd like to return original document line number references to the errors, to help end-users fix their documents.

data/schemas/allOf.v1alpha1.schema.json contains an allOf array w/ if/then conditionals to select between different schemas based on a value in a top-level key (it's not the name of the top-level key, so I can't use discriminator). The globbing hack is to avoid ingesting the allOf schema twice.

ajv validate --all-errors --spec=draft7  -r 'data/schemas.upstream/**/*.schema.json'  -r 'data/schemas/!(allOf.v1alpha1).schema.json' -s   data/schemas/allOf.v1alpha1.schema.json     --validate-formats=true  --strict=log  -c ajv-keywords -c ajv-formats --verbose --data --errors=text  -d $DOCUMENT_YAML 

robbat2 avatar Nov 03 '24 05:11 robbat2