cmd/cue/cmd: only allow dot files when specified explicitly

Issue #123

Change-Id: I0b8150fbe91362790562a8d7bcb8f6bc665c09bf
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/3500
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cmd/cue/cmd/testdata/script/hidden.txt b/cmd/cue/cmd/testdata/script/eval_hidden.txt
similarity index 82%
rename from cmd/cue/cmd/testdata/script/hidden.txt
rename to cmd/cue/cmd/testdata/script/eval_hidden.txt
index cf6f0ec..c0de891 100644
--- a/cmd/cue/cmd/testdata/script/hidden.txt
+++ b/cmd/cue/cmd/testdata/script/eval_hidden.txt
@@ -1,4 +1,4 @@
-cue eval
+cue eval .foo.cue
 cmp stdout expect-stdout
 
 -- expect-stdout --
diff --git a/cmd/cue/cmd/testdata/script/eval_hiddenfail.txt b/cmd/cue/cmd/testdata/script/eval_hiddenfail.txt
new file mode 100644
index 0000000..c12d92f
--- /dev/null
+++ b/cmd/cue/cmd/testdata/script/eval_hiddenfail.txt
@@ -0,0 +1,9 @@
+! cue eval
+cmp stderr expect-stderr
+
+-- expect-stderr --
+build constraints exclude all CUE files in . (ignored: .foo.cue)
+-- .foo.cue --
+package foo
+
+a: 42
diff --git a/cue/load/config.go b/cue/load/config.go
index 41df679..820a7d4 100644
--- a/cue/load/config.go
+++ b/cue/load/config.go
@@ -115,6 +115,10 @@
 	// a package.
 	Tools bool
 
+	// filesMode indicates that files are specified
+	// explicitly on the command line.
+	filesMode bool
+
 	// If DataFiles is set, the loader includes entries for directories that
 	// have no CUE files, but have recognized data files that could be converted
 	// to CUE.
diff --git a/cue/load/loader.go b/cue/load/loader.go
index ed64913..deefd3d 100644
--- a/cue/load/loader.go
+++ b/cue/load/loader.go
@@ -98,6 +98,7 @@
 func (l *loader) cueFilesPackage(files []string) *build.Instance {
 	pos := token.NoPos
 	cfg := l.cfg
+	cfg.filesMode = true
 	// ModInit() // TODO: support modules
 	pkg := l.cfg.Context.NewInstance(cfg.Dir, l.loadFunc())
 
diff --git a/cue/load/match.go b/cue/load/match.go
index d751f2f..6047b20 100644
--- a/cue/load/match.go
+++ b/cue/load/match.go
@@ -46,6 +46,9 @@
 	if strings.HasPrefix(name, "_") {
 		return
 	}
+	if !cfg.filesMode && strings.HasPrefix(name, ".") {
+		return
+	}
 
 	i := strings.LastIndex(name, ".")
 	if i < 0 {