Correct import directory resolution for nested imports. #2666
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The importing mechanism was/is determining the import directory based on the path of the importing taskfile. This means that the directory of an imported taskfile is not following the expectation of users, and effectively becomes unpredictable as imports are nested.
The logic seems to be that, C was imported from B, and therefore C should run in the folder of B (./foo above). However, if B is running in the folder of A (./) then having C run in the folder of B, even though B is running in the folder of A, seems to be wrong. C should run in the folder of B, if B runs in the folder of A, then C should also run in the folder of A.
This PR changes that behaviour, so that it matches the user documentation, and imports taskfiles based on the resolved directory of the importing taskfile. As a result, imports are relative to one another, based on their resolved directories.
Essentially; if taskfile A imports taskfile B then it expects taskfile B to have the same working dir as A, unless the importing mechanism is configured by A (via import dir), in which case taskfile B would have that configured working dir.
fixes #903
fixes #2620