From 67105b332ffdd3a1144e4aa9834c934b3f4155c7 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Sun, 15 Jul 2018 15:37:20 -0300 Subject: [PATCH] Move path expanding logic to shell.Expand --- internal/osext/osext.go | 22 ---------------------- internal/status/glob.go | 5 ++--- task_test.go | 20 ++++++++++++++++++++ testdata/expand/Taskfile.yml | 8 ++++++++ variables.go | 5 +++-- 5 files changed, 33 insertions(+), 27 deletions(-) delete mode 100644 internal/osext/osext.go create mode 100644 testdata/expand/Taskfile.yml diff --git a/internal/osext/osext.go b/internal/osext/osext.go deleted file mode 100644 index e6932e6a..00000000 --- a/internal/osext/osext.go +++ /dev/null @@ -1,22 +0,0 @@ -package osext - -import ( - "os" - - "github.com/mitchellh/go-homedir" -) - -// Expand is an improved version of os.ExpandEnv, -// that not only expand enrionment variable ($GOPATH/src/github.com/...) -// but also expands "~" as the home directory. -func Expand(s string) (string, error) { - s = os.ExpandEnv(s) - - var err error - s, err = homedir.Expand(s) - if err != nil { - return "", err - } - - return s, nil -} diff --git a/internal/status/glob.go b/internal/status/glob.go index 2bbe2ae4..f6edb976 100644 --- a/internal/status/glob.go +++ b/internal/status/glob.go @@ -4,9 +4,8 @@ import ( "path/filepath" "sort" - "github.com/go-task/task/internal/osext" - "github.com/mattn/go-zglob" + "mvdan.cc/sh/shell" ) func glob(dir string, globs []string) (files []string, err error) { @@ -14,7 +13,7 @@ func glob(dir string, globs []string) (files []string, err error) { if !filepath.IsAbs(g) { g = filepath.Join(dir, g) } - g, err = osext.Expand(g) + g, err = shell.Expand(g, nil) if err != nil { return nil, err } diff --git a/task_test.go b/task_test.go index 6e48faa8..6f0214c9 100644 --- a/task_test.go +++ b/task_test.go @@ -12,6 +12,7 @@ import ( "github.com/go-task/task" "github.com/go-task/task/internal/taskfile" + "github.com/mitchellh/go-homedir" "github.com/stretchr/testify/assert" ) @@ -412,3 +413,22 @@ func TestTaskVersion(t *testing.T) { }) } } + +func TestExpand(t *testing.T) { + const dir = "testdata/expand" + + home, err := homedir.Dir() + if err != nil { + t.Errorf("Couldn't get $HOME: %v", err) + } + var buff bytes.Buffer + + e := task.Executor{ + Dir: dir, + Stdout: &buff, + Stderr: &buff, + } + assert.NoError(t, e.Setup()) + assert.NoError(t, e.Run(taskfile.Call{Task: "pwd"})) + assert.Equal(t, home, strings.TrimSpace(buff.String())) +} diff --git a/testdata/expand/Taskfile.yml b/testdata/expand/Taskfile.yml new file mode 100644 index 00000000..7398407c --- /dev/null +++ b/testdata/expand/Taskfile.yml @@ -0,0 +1,8 @@ +version: '2' + +tasks: + pwd: + cmds: + - pwd + dir: '~' + silent: true diff --git a/variables.go b/variables.go index ce8a4127..5ac9d080 100644 --- a/variables.go +++ b/variables.go @@ -3,9 +3,10 @@ package task import ( "path/filepath" - "github.com/go-task/task/internal/osext" "github.com/go-task/task/internal/taskfile" "github.com/go-task/task/internal/templater" + + "mvdan.cc/sh/shell" ) var ( @@ -40,7 +41,7 @@ func (e *Executor) CompiledTask(call taskfile.Call) (*taskfile.Task, error) { Method: r.Replace(origTask.Method), Prefix: r.Replace(origTask.Prefix), } - new.Dir, err = osext.Expand(new.Dir) + new.Dir, err = shell.Expand(new.Dir, nil) if err != nil { return nil, err }