internal/encoding: allow CUE as OpenAPI input
Regression.
Change-Id: I2c7b7e042da802a4f6c8017d83c494e96bbb1f6b
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/5645
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cmd/cue/cmd/testdata/script/def_openapi.txt b/cmd/cue/cmd/testdata/script/def_openapi.txt
index 76a46f6..892d449 100644
--- a/cmd/cue/cmd/testdata/script/def_openapi.txt
+++ b/cmd/cue/cmd/testdata/script/def_openapi.txt
@@ -14,6 +14,10 @@
cue def -p foo openapi.json
cmp stdout expect-cue
+# cue to openapi
+cue def openapi+cue: expect-cue-out -o -
+cmp stdout expect-cue2
+
-- foo.cue --
// Some clever title.
@@ -181,3 +185,17 @@
b: >=0 & <10
...
}
+-- expect-cue2 --
+info: {
+ title: "Some clever title."
+ version: "v1"
+}
+Bar :: {
+ foo: Foo
+ ...
+}
+Foo :: {
+ a: int
+ b: >=0 & <10
+ ...
+}
diff --git a/internal/encoding/encoding.go b/internal/encoding/encoding.go
index 0a0b07c..5b4a733 100644
--- a/internal/encoding/encoding.go
+++ b/internal/encoding/encoding.go
@@ -78,6 +78,10 @@
if i.err != nil {
return
}
+ i.doInterpret()
+}
+
+func (i *Decoder) doInterpret() {
// Interpretations
if i.interpret != nil {
var r cue.Runtime
@@ -197,6 +201,9 @@
i.file, i.err = cfg.ParseFile(path, r)
}
i.validate(i.file, f)
+ if i.err == nil {
+ i.doInterpret()
+ }
case build.JSON, build.JSONL:
i.next = json.NewDecoder(nil, path, r).Extract
i.Next()