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()