fix(compiler): create task.dir before running dynamic (sh:) vars#2800
Open
SAY-5 wants to merge 1 commit intogo-task:mainfrom
Open
fix(compiler): create task.dir before running dynamic (sh:) vars#2800SAY-5 wants to merge 1 commit intogo-task:mainfrom
SAY-5 wants to merge 1 commit intogo-task:mainfrom
Conversation
A task's 'dir:' is documented as being created on demand, but dynamic
variables (sh:) compile before the task's mkdir runs. With a
non-existent dir, the shell exec aborts with:
task: Command "cat ../exist.txt" failed: chdir
/path/does-not-exist: no such file or directory
even though the same command inside cmds: works fine because mkdir
runs first.
Create the directory (same 0o755 perms as the main task.mkdir uses)
in HandleDynamicVar before launching the shell, so sh: variables and
cmds: see the same filesystem state.
Fixes go-task#1001
Signed-off-by: Sai Asish Y <say.apm35@gmail.com>
trulede
reviewed
Apr 17, 2026
Contributor
trulede
left a comment
There was a problem hiding this comment.
This is the wrong approach to solve this problem. A non-existent path should cause an error, not just create the directory regardless.
The problem needs to be solved elsewhere in the code base.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #1001.
Problem
A tasks
dir:is documented as being created on demand:but dynamic variables (
sh:) are compiled before the tasksmkdirstep runs. So this Taskfile:aborts with a cryptic
chdirerror:even though running the same command inside
cmds:works fine, becausemkdirruns beforerunCommandfor normal commands but after variable compilation.Fix
Compiler.HandleDynamicVarnow createsdirwith0o755(the same permissionsExecutor.mkdiruses attask.go:311) before callingexecext.RunCommand. Dynamic variables and cmds now see the same filesystem state, and the documenteddir:semantics hold for both.No behaviour change when the directory already exists; no behaviour change for tasks without
sh:vars.Signed off per DCO.