cmd/cue: fix bug in -o, which would not write files for some commands

Fixes #802

Change-Id: I297adad9265f6731ee4847f76bc6e9160606a5f5
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/9067
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Paul Jolly <paul@myitcv.org.uk>
diff --git a/cmd/cue/cmd/def.go b/cmd/cue/cmd/def.go
index 5b7040d..9173ceb 100644
--- a/cmd/cue/cmd/def.go
+++ b/cmd/cue/cmd/def.go
@@ -71,5 +71,9 @@
 		exitOnErr(cmd, err, true)
 	}
 	exitOnErr(cmd, iter.err(), true)
+
+	err = e.Close()
+	exitOnErr(cmd, err, true)
+
 	return nil
 }
diff --git a/cmd/cue/cmd/eval.go b/cmd/cue/cmd/eval.go
index 8cb676a..244f053 100644
--- a/cmd/cue/cmd/eval.go
+++ b/cmd/cue/cmd/eval.go
@@ -160,5 +160,9 @@
 		}
 	}
 	exitOnErr(cmd, iter.err(), true)
+
+	err = e.Close()
+	exitOnErr(cmd, err, true)
+
 	return nil
 }
diff --git a/cmd/cue/cmd/testdata/script/def_openapi.txt b/cmd/cue/cmd/testdata/script/def_openapi.txt
index 1cf3ab7..69b3e10 100644
--- a/cmd/cue/cmd/testdata/script/def_openapi.txt
+++ b/cmd/cue/cmd/testdata/script/def_openapi.txt
@@ -1,3 +1,6 @@
+cue def foo.cue -o openapi+cue:out.cue
+cmp out.cue expect-out.cue
+
 cue def openapi+cue: expect-cue-out -o -
 
 cue def foo.cue -o openapi:-
@@ -275,3 +278,30 @@
 	b: uint & <10
 	...
 }
+-- expect-out.cue --
+openapi: "3.0.0"
+info: {
+	title:   "Some clever title."
+	version: "v1"
+}
+paths: {}
+components: schemas: {
+	Bar: {
+		type: "object"
+		required: ["foo"]
+		properties: foo: $ref: "#/components/schemas/Foo"
+	}
+	Foo: {
+		type: "object"
+		required: ["a", "b"]
+		properties: {
+			a: type: "integer"
+			b: {
+				type:             "integer"
+				minimum:          0
+				maximum:          10
+				exclusiveMaximum: true
+			}
+		}
+	}
+}
diff --git a/cmd/cue/cmd/testdata/script/eval_newline.txt b/cmd/cue/cmd/testdata/script/eval_newline.txt
index 948efe7..55fd488 100644
--- a/cmd/cue/cmd/testdata/script/eval_newline.txt
+++ b/cmd/cue/cmd/testdata/script/eval_newline.txt
@@ -1,6 +1,12 @@
 cue eval ./data.cue
 cmp stdout expect-stdout
+
+cue eval ./data.cue -o out.cue
+cmp out.cue expect-out.cue
+
 -- data.cue --
 3
 -- expect-stdout --
 3
+-- expect-out.cue --
+3