mirror of
https://github.com/go-task/task.git
synced 2025-01-06 03:53:54 +02:00
fix: resolve directory correctly when using --dir
This commit is contained in:
parent
bb9d582255
commit
c7ba42b81a
@ -16,6 +16,7 @@ type Node interface {
|
||||
Location() string
|
||||
Optional() bool
|
||||
Remote() bool
|
||||
BaseDir() string
|
||||
}
|
||||
|
||||
func NewRootNode(
|
||||
@ -26,7 +27,7 @@ func NewRootNode(
|
||||
// Check if there is something to read on STDIN
|
||||
stat, _ := os.Stdin.Stat()
|
||||
if (stat.Mode()&os.ModeCharDevice) == 0 && stat.Size() > 0 {
|
||||
return NewStdinNode()
|
||||
return NewStdinNode(dir)
|
||||
}
|
||||
// If no entrypoint is specified, search for a taskfile
|
||||
if entrypoint == "" {
|
||||
|
@ -52,3 +52,7 @@ func (node *FileNode) Read(ctx context.Context) ([]byte, error) {
|
||||
defer f.Close()
|
||||
return io.ReadAll(f)
|
||||
}
|
||||
|
||||
func (node *FileNode) BaseDir() string {
|
||||
return node.Dir
|
||||
}
|
||||
|
@ -65,3 +65,7 @@ func (node *HTTPNode) Read(ctx context.Context) ([]byte, error) {
|
||||
|
||||
return b, nil
|
||||
}
|
||||
|
||||
func (node *HTTPNode) BaseDir() string {
|
||||
return ""
|
||||
}
|
||||
|
@ -10,12 +10,14 @@ import (
|
||||
// A StdinNode is a node that reads a taskfile from the standard input stream.
|
||||
type StdinNode struct {
|
||||
*BaseNode
|
||||
Dir string
|
||||
}
|
||||
|
||||
func NewStdinNode() (*StdinNode, error) {
|
||||
func NewStdinNode(dir string) (*StdinNode, error) {
|
||||
base := NewBaseNode()
|
||||
return &StdinNode{
|
||||
BaseNode: base,
|
||||
Dir: dir,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@ -38,3 +40,7 @@ func (node *StdinNode) Read(ctx context.Context) ([]byte, error) {
|
||||
}
|
||||
return stdin, nil
|
||||
}
|
||||
|
||||
func (node *StdinNode) BaseDir() string {
|
||||
return node.Dir
|
||||
}
|
||||
|
@ -48,12 +48,11 @@ func Read(
|
||||
return nil, &errors.TaskfileVersionCheckError{URI: node.Location()}
|
||||
}
|
||||
|
||||
// Annotate any included Taskfile reference with a base directory for resolving relative paths
|
||||
if node, isFileNode := node.(*FileNode); isFileNode {
|
||||
if dir := node.BaseDir(); dir != "" {
|
||||
_ = tf.Includes.Range(func(namespace string, include ast.Include) error {
|
||||
// Set the base directory for resolving relative paths, but only if not already set
|
||||
if include.BaseDir == "" {
|
||||
include.BaseDir = node.Dir
|
||||
include.BaseDir = dir
|
||||
tf.Includes.Set(namespace, include)
|
||||
}
|
||||
return nil
|
||||
|
Loading…
Reference in New Issue
Block a user