From b92a5cf15b1bf7322d1942cf0eaddad5521ea45a Mon Sep 17 00:00:00 2001 From: Timothy Rule <34501912+trulede@users.noreply.github.com> Date: Sat, 10 Jan 2026 00:47:09 +0100 Subject: [PATCH] Postpone glob template substitution until dynamic variables are evaluated. --- variables.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/variables.go b/variables.go index 9e40edb2b3..434ec398d4 100644 --- a/variables.go +++ b/variables.go @@ -96,8 +96,15 @@ func (e *Executor) compiledTask(call *Call, evaluateShVars bool) (*ast.Task, err fullName = strings.Replace(fullName, "*", match, 1) } } - cache := &templater.Cache{Vars: vars} + globber := func(globs []*ast.Glob) []*ast.Glob { + // Delays globbing until dynamic variables are available. + if evaluateShVars { + return templater.ReplaceGlobs(globs, cache) + } else { + return origTask.Sources + } + } new := ast.Task{ Task: origTask.Task, Label: templater.Replace(origTask.Label, cache), @@ -105,8 +112,8 @@ func (e *Executor) compiledTask(call *Call, evaluateShVars bool) (*ast.Task, err Prompt: templater.Replace(origTask.Prompt, cache), Summary: templater.Replace(origTask.Summary, cache), Aliases: origTask.Aliases, - Sources: templater.ReplaceGlobs(origTask.Sources, cache), - Generates: templater.ReplaceGlobs(origTask.Generates, cache), + Sources: globber(origTask.Sources), + Generates: globber(origTask.Generates), Dir: templater.Replace(origTask.Dir, cache), Set: origTask.Set, Shopt: origTask.Shopt,