Repository navigation
Incorrect/confusing include cycle detected error message after a silly mistake #1881
Description
Activity
- addedstate: needs triageWaiting to be triaged by a maintainer.Waiting to be triaged by a maintainer.
on Oct 24, 2024 Hi @VinGarcia , You’re getting a
cyclic includeerror because it implicitly re-points to the defaultTaskfile.ymlfile.In
TaskfileCommon.yml, theGOBINfield is missing thepath(taskfile) field, so it defaults to an empty string, which points only to the current directory (joiningdirandpathwithpathbeing empty). As a result, when the code tries to locate the actual file using theExistsfunction, it doesn't find the actual file and then checks for default filenames—in this case, Taskfile.yml.Lines 105 to 126 in fe09c01
func Exists(l *logger.Logger, path string) (string, error) { fi, err := os.Stat(path) if err != nil { return "", err } if fi.Mode().IsRegular() || fi.Mode()&os.ModeDevice != 0 || fi.Mode()&os.ModeSymlink != 0 || fi.Mode()&os.ModeNamedPipe != 0 { return filepath.Abs(path) } for _, taskfile := range defaultTaskfiles { alt := filepathext.SmartJoin(path, taskfile) if _, err := os.Stat(alt); err == nil { l.VerboseOutf(logger.Magenta, "task: [%s] Not found - Using alternative (%s)\n", path, taskfile) return filepath.Abs(alt) } } return "", errors.TaskfileNotFoundError{URI: path, Walk: false} } The view of the
include cycleis:Loadinggraph LR; Taskfile.yml-->|common|TaskfileCommon.yml; TaskfileCommon.yml-->|GOBIN|Taskfile.yml;I'm not sure if this is an issue that needs to be fixed, but perhaps we could consider preventing empty strings and null values in the path of includes if there’s no use case for them.
includes: # This was the silly mistake, this should be `vars` not `includes` GOBIN: sh: echo $(go env GOPATH)/bin
This should absolutely be generating an error when no
taskfile:ordirectory:is specified on an include.- addedarea: parserChanges related to parsing Taskfiles.Changes related to parsing Taskfiles.good first issueIssues that are good for first-time contributors to pick up.Issues that are good for first-time contributors to pick up.and removedstate: needs triageWaiting to be triaged by a maintainer.Waiting to be triaged by a maintainer.
on Nov 1, 2024 @pd93 So, I think I can work on this.
Reacted by Pete Davison and Vinícius Garcia
I did a silly mistake on a Taskfile and got a misleading message as a response, so it took me a while to figure out exactly what the issue was.
Minimum Reproducible example
I create two taskfiles in the same directory with the following names:
And
Then I tried running:
And the error message I got back was this:
I am not sure how easy it is to fix this issue and I understand this might not be a high priority bug, but I thought it would be worth mentioning anyway.
Great tool, thanks for making it and keeping it open source =]