Skip to content

Commit

Permalink
feat: don't send entire include to node resolvers
Browse files Browse the repository at this point in the history
  • Loading branch information
pd93 committed Feb 19, 2024
1 parent e6f45c9 commit a6bffbb
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 24 deletions.
5 changes: 2 additions & 3 deletions taskfile/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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(
Expand Down
13 changes: 6 additions & 7 deletions taskfile/node_file.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
Expand Down
9 changes: 4 additions & 5 deletions taskfile/node_http.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
}
Expand Down
13 changes: 6 additions & 7 deletions taskfile/node_stdin.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
Expand Down
4 changes: 2 additions & 2 deletions taskfile/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down

0 comments on commit a6bffbb

Please sign in to comment.