cmd/cue/cmd: fail in case flag evaluation fails
Fixes #248
Change-Id: Ifb39450af2b99aba41e37a17822780249669c0c0
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/4725
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cmd/cue/cmd/eval.go b/cmd/cue/cmd/eval.go
index efa8afa..89c579f 100644
--- a/cmd/cue/cmd/eval.go
+++ b/cmd/cue/cmd/eval.go
@@ -140,6 +140,9 @@
writeNode(format.Node(e))
}
v := inst.Eval(e)
+ if err := v.Err(); err != nil {
+ return err
+ }
if flagConcrete.Bool(cmd) && !flagIgnore.Bool(cmd) {
if err := v.Validate(cue.Concrete(true)); err != nil {
exitIfErr(cmd, inst, err, false)
diff --git a/cmd/cue/cmd/root.go b/cmd/cue/cmd/root.go
index b52d9ed..310571b 100644
--- a/cmd/cue/cmd/root.go
+++ b/cmd/cue/cmd/root.go
@@ -44,7 +44,11 @@
func mkRunE(c *Command, f runFunction) func(*cobra.Command, []string) error {
return func(cmd *cobra.Command, args []string) error {
c.Command = cmd
- return f(c, args)
+ err := f(c, args)
+ if err != nil {
+ exitOnErr(c, err, true)
+ }
+ return err
}
}
diff --git a/cmd/cue/cmd/testdata/script/eval_e.txt b/cmd/cue/cmd/testdata/script/eval_e.txt
new file mode 100644
index 0000000..18c79b0
--- /dev/null
+++ b/cmd/cue/cmd/testdata/script/eval_e.txt
@@ -0,0 +1,12 @@
+! cue eval -e nonExist
+cmp stderr expect-stderr
+cmp stdout expect-stdout
+
+-- expect-stdout --
+-- expect-stderr --
+reference "nonExist" not found:
+ <expression flag>:1:1
+-- partial.cue --
+package exitcode
+
+a: 1