diff --git a/cmd/cue/cmd/help.go b/cmd/cue/cmd/help.go index ea0d74b6c..715672434 100644 --- a/cmd/cue/cmd/help.go +++ b/cmd/cue/cmd/help.go @@ -613,14 +613,15 @@ The following tags are only valid in combination with other tags, and influence the functioning of the codec. The tag they are valid with is mentioned in parentheses at the end. - strictFeatures report errors for lossy mappings (jsonschema) + strictFeatures report errors for lossy mappings. Enabled by default (jsonschema) strictKeywords report errors for unknown keywords (jsonschema) strict report errors for either of the above (jsonschema) The above flags also accept a boolean flag value (e.g. true, 1, false, 0) -to set them explicitly. For example: +to set them explicitly. For example, to ignore unimplemented JSON Schema +features rather than giving an error: - jsonschema+strictKeywords=0+strictFeatures=1 + jsonschema+strictFeatures=0 Many commands also support the --out and --outfile/-o flags. The --out flag specifies the output type using a qualifier diff --git a/cmd/cue/cmd/testdata/script/def_jsonschema.txtar b/cmd/cue/cmd/testdata/script/def_jsonschema.txtar index 474f09973..f68cc3b97 100644 --- a/cmd/cue/cmd/testdata/script/def_jsonschema.txtar +++ b/cmd/cue/cmd/testdata/script/def_jsonschema.txtar @@ -5,7 +5,10 @@ cmp stdout expect-stdout exec cue def schema.json -p schema -l '#Person:' cmp stdout expect-stdout -exec cue def jsonschema: bad.json +! exec cue def jsonschema: bad.json +cmp stderr expect-stderr-strict-features + +exec cue def jsonschema+strictFeatures=0: bad.json ! exec cue def jsonschema: bad.json --strict cmp stderr expect-stderr diff --git a/internal/filetypes/filetypes_test.go b/internal/filetypes/filetypes_test.go index a675fe322..6e4805a98 100644 --- a/internal/filetypes/filetypes_test.go +++ b/internal/filetypes/filetypes_test.go @@ -181,7 +181,7 @@ func TestFromFile(t *testing.T) { Form: build.Schema, BoolTags: map[string]bool{ "strict": false, - "strictFeatures": false, + "strictFeatures": true, "strictKeywords": false, }, }, @@ -419,7 +419,7 @@ func TestParseArgs(t *testing.T) { Interpretation: "jsonschema", BoolTags: map[string]bool{ "strict": false, - "strictFeatures": false, + "strictFeatures": true, "strictKeywords": false, }, }, @@ -439,6 +439,21 @@ func TestParseArgs(t *testing.T) { }, }, }, + }, { + in: "jsonschema+strictFeatures=0: bar.schema", + out: []*build.File{ + { + Filename: "bar.schema", + Encoding: "json", + Interpretation: "jsonschema", + Form: build.Schema, + BoolTags: map[string]bool{ + "strict": false, + "strictFeatures": false, + "strictKeywords": false, + }, + }, + }, }, { in: `json: c:\foo.json c:\path\to\file.dat`, out: []*build.File{ diff --git a/internal/filetypes/types.cue b/internal/filetypes/types.cue index 19c95c6cd..7f42bb4fb 100644 --- a/internal/filetypes/types.cue +++ b/internal/filetypes/types.cue @@ -297,7 +297,7 @@ interpretations: jsonschema: { boolTags: { strict: *false | bool strictKeywords: *strict | bool - strictFeatures: *strict | bool + strictFeatures: *true | bool } }