From 028ae1a66079aacff5ce90070fe456fbe35befc8 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Sun, 21 Sep 2025 16:10:06 -0300 Subject: [PATCH] fix: fix message shown when a taskfile was not found (#2431) --- errors/errors_taskfile.go | 10 +++++++--- setup.go | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/errors/errors_taskfile.go b/errors/errors_taskfile.go index a2f0bad7..ad665d29 100644 --- a/errors/errors_taskfile.go +++ b/errors/errors_taskfile.go @@ -11,14 +11,18 @@ import ( // TaskfileNotFoundError is returned when no appropriate Taskfile is found when // searching the filesystem. type TaskfileNotFoundError struct { - URI string - Walk bool + URI string + Walk bool + AskInit bool } func (err TaskfileNotFoundError) Error() string { var walkText string if err.Walk { - walkText = " (or any of the parent directories)" + walkText = " (or any of the parent directories)." + } + if err.AskInit { + walkText += " Run `task --init` to create a new Taskfile." } return fmt.Sprintf(`task: No Taskfile found at %q%s`, err.URI, walkText) } diff --git a/setup.go b/setup.go index b4926f2d..6234ceef 100644 --- a/setup.go +++ b/setup.go @@ -16,6 +16,7 @@ import ( "github.com/go-task/task/v3/internal/env" "github.com/go-task/task/v3/internal/execext" "github.com/go-task/task/v3/internal/filepathext" + "github.com/go-task/task/v3/internal/fsext" "github.com/go-task/task/v3/internal/logger" "github.com/go-task/task/v3/internal/output" "github.com/go-task/task/v3/internal/version" @@ -56,6 +57,13 @@ func (e *Executor) Setup() error { func (e *Executor) getRootNode() (taskfile.Node, error) { node, err := taskfile.NewRootNode(e.Entrypoint, e.Dir, e.Insecure, e.Timeout) + if os.IsNotExist(err) { + return nil, errors.TaskfileNotFoundError{ + URI: fsext.DefaultDir(e.Entrypoint, e.Dir), + Walk: true, + AskInit: true, + } + } if err != nil { return nil, err }