From a6bffbb46d227605921b8952d7b69c2d2251b6f1 Mon Sep 17 00:00:00 2001 From: Pete Davison Date: Tue, 13 Feb 2024 19:28:42 +0000 Subject: [PATCH] feat: don't send entire include to node resolvers --- taskfile/node.go | 5 ++--- taskfile/node_file.go | 13 ++++++------- taskfile/node_http.go | 9 ++++----- taskfile/node_stdin.go | 13 ++++++------- taskfile/reader.go | 4 ++-- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/taskfile/node.go b/taskfile/node.go index 6aabd7ebb6..5c6c1bf149 100644 --- a/taskfile/node.go +++ b/taskfile/node.go @@ -8,7 +8,6 @@ import ( "github.com/go-task/task/v3/errors" "github.com/go-task/task/v3/internal/experiments" "github.com/go-task/task/v3/internal/logger" - "github.com/go-task/task/v3/taskfile/ast" ) type Node interface { @@ -18,8 +17,8 @@ type Node interface { Dir() string Optional() bool Remote() bool - ResolveIncludeEntrypoint(include ast.Include) (string, error) - ResolveIncludeDir(include ast.Include) (string, error) + ResolveIncludeEntrypoint(entrypoint string) (string, error) + ResolveIncludeDir(dir string) (string, error) } func NewRootNode( diff --git a/taskfile/node_file.go b/taskfile/node_file.go index 8be8aa47ad..7304f42c49 100644 --- a/taskfile/node_file.go +++ b/taskfile/node_file.go @@ -10,7 +10,6 @@ import ( "github.com/go-task/task/v3/internal/execext" "github.com/go-task/task/v3/internal/filepathext" "github.com/go-task/task/v3/internal/logger" - "github.com/go-task/task/v3/taskfile/ast" ) // A FileNode is a node that reads a taskfile from the local filesystem. @@ -78,13 +77,13 @@ func resolveFileNodeEntrypointAndDir(l *logger.Logger, entrypoint, dir string) ( return entrypoint, dir, nil } -func (node *FileNode) ResolveIncludeEntrypoint(include ast.Include) (string, error) { +func (node *FileNode) ResolveIncludeEntrypoint(entrypoint string) (string, error) { // If the file is remote, we don't need to resolve the path - if strings.Contains(include.Taskfile, "://") { - return include.Taskfile, nil + if strings.Contains(entrypoint, "://") { + return entrypoint, nil } - path, err := execext.Expand(include.Taskfile) + path, err := execext.Expand(entrypoint) if err != nil { return "", err } @@ -99,8 +98,8 @@ func (node *FileNode) ResolveIncludeEntrypoint(include ast.Include) (string, err return filepathext.SmartJoin(entrypointDir, path), nil } -func (node *FileNode) ResolveIncludeDir(include ast.Include) (string, error) { - path, err := execext.Expand(include.Dir) +func (node *FileNode) ResolveIncludeDir(dir string) (string, error) { + path, err := execext.Expand(dir) if err != nil { return "", err } diff --git a/taskfile/node_http.go b/taskfile/node_http.go index 1e97fdc543..1b88dc7ed7 100644 --- a/taskfile/node_http.go +++ b/taskfile/node_http.go @@ -11,7 +11,6 @@ import ( "github.com/go-task/task/v3/internal/execext" "github.com/go-task/task/v3/internal/filepathext" "github.com/go-task/task/v3/internal/logger" - "github.com/go-task/task/v3/taskfile/ast" ) // An HTTPNode is a node that reads a Taskfile from a remote location via HTTP. @@ -76,16 +75,16 @@ func (node *HTTPNode) Read(ctx context.Context) ([]byte, error) { return b, nil } -func (node *HTTPNode) ResolveIncludeEntrypoint(include ast.Include) (string, error) { - ref, err := url.Parse(include.Taskfile) +func (node *HTTPNode) ResolveIncludeEntrypoint(entrypoint string) (string, error) { + ref, err := url.Parse(entrypoint) if err != nil { return "", err } return node.URL.ResolveReference(ref).String(), nil } -func (node *HTTPNode) ResolveIncludeDir(include ast.Include) (string, error) { - path, err := execext.Expand(include.Dir) +func (node *HTTPNode) ResolveIncludeDir(dir string) (string, error) { + path, err := execext.Expand(dir) if err != nil { return "", err } diff --git a/taskfile/node_stdin.go b/taskfile/node_stdin.go index 467821312b..d14e5d2ee8 100644 --- a/taskfile/node_stdin.go +++ b/taskfile/node_stdin.go @@ -9,7 +9,6 @@ import ( "github.com/go-task/task/v3/internal/execext" "github.com/go-task/task/v3/internal/filepathext" - "github.com/go-task/task/v3/taskfile/ast" ) // A StdinNode is a node that reads a taskfile from the standard input stream. @@ -45,13 +44,13 @@ func (node *StdinNode) Read(ctx context.Context) ([]byte, error) { return stdin, nil } -func (node *StdinNode) ResolveIncludeEntrypoint(include ast.Include) (string, error) { +func (node *StdinNode) ResolveIncludeEntrypoint(entrypoint string) (string, error) { // If the file is remote, we don't need to resolve the path - if strings.Contains(include.Taskfile, "://") { - return include.Taskfile, nil + if strings.Contains(entrypoint, "://") { + return entrypoint, nil } - path, err := execext.Expand(include.Taskfile) + path, err := execext.Expand(entrypoint) if err != nil { return "", err } @@ -63,8 +62,8 @@ func (node *StdinNode) ResolveIncludeEntrypoint(include ast.Include) (string, er return filepathext.SmartJoin(node.Dir(), path), nil } -func (node *StdinNode) ResolveIncludeDir(include ast.Include) (string, error) { - path, err := execext.Expand(include.Dir) +func (node *StdinNode) ResolveIncludeDir(dir string) (string, error) { + path, err := execext.Expand(dir) if err != nil { return "", err } diff --git a/taskfile/reader.go b/taskfile/reader.go index 88dec7e723..77872b4268 100644 --- a/taskfile/reader.go +++ b/taskfile/reader.go @@ -64,12 +64,12 @@ func Read( return err } - entrypoint, err := node.ResolveIncludeEntrypoint(include) + entrypoint, err := node.ResolveIncludeEntrypoint(include.Taskfile) if err != nil { return err } - dir, err := node.ResolveIncludeDir(include) + dir, err := node.ResolveIncludeDir(include.Dir) if err != nil { return err }