1
0
mirror of https://github.com/go-task/task.git synced 2025-02-03 13:22:11 +02:00

feat: don't send entire include to node resolvers

This commit is contained in:
Pete Davison 2024-02-13 19:28:42 +00:00
parent cbc19d35ea
commit 68191205c7
5 changed files with 20 additions and 24 deletions

View File

@ -9,7 +9,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 {
@ -19,8 +18,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(

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}