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 {