pkg/tool/file: allow OS-independent filenames
More or less. Absolute paths are still different.
Change-Id: I4198184bd323e7ab02feaa53560a29eff5fb306c
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2283
Reviewed-by: Marcel van Lohuizen <mpvl@google.com>
diff --git a/pkg/tool/file/file.go b/pkg/tool/file/file.go
index 29bf6d9..b64a64d 100644
--- a/pkg/tool/file/file.go
+++ b/pkg/tool/file/file.go
@@ -64,6 +64,7 @@
func (c *cmdAppend) Run(ctx *task.Context, v cue.Value) (res interface{}, err error) {
filename := lookupStr(v, "filename")
+ filename = filepath.FromSlash(filename)
mode, err := v.Lookup("permissions").Int64()
if err != nil {
return nil, err
@@ -84,6 +85,7 @@
func (c *cmdCreate) Run(ctx *task.Context, v cue.Value) (res interface{}, err error) {
filename := lookupStr(v, "filename")
+ filename = filepath.FromSlash(filename)
mode, err := v.Lookup("permissions").Int64()
if err != nil {
return nil, err
@@ -94,6 +96,10 @@
}
func (c *cmdGlob) Run(ctx *task.Context, v cue.Value) (res interface{}, err error) {
- m, err := filepath.Glob(lookupStr(v, "glob"))
+ glob := filepath.FromSlash(lookupStr(v, "glob"))
+ m, err := filepath.Glob(glob)
+ for i, s := range m {
+ m[i] = filepath.ToSlash(s)
+ }
return m, err
}