1
0
mirror of https://github.com/go-task/task.git synced 2025-08-10 22:42:19 +02:00

feat: parse templates in collection-type variables (#1526)

* refactor: replacer

* feat: move traverser to deepcopy package

* feat: nested map variable templating

* refactor: ReplaceVar function

* feat: test cases

* fix: TraverseStringsFunc copy value instead of pointer
This commit is contained in:
Pete Davison
2024-03-10 17:11:07 +00:00
committed by GitHub
parent 19a4d8f928
commit 08a888dc8a
13 changed files with 243 additions and 135 deletions

View File

@@ -22,11 +22,10 @@ func Dotenv(c *compiler.Compiler, tf *ast.Taskfile, dir string) (*ast.Vars, erro
}
env := &ast.Vars{}
tr := templater.Templater{Vars: vars}
cache := &templater.Cache{Vars: vars}
for _, dotEnvPath := range tf.Dotenv {
dotEnvPath = tr.Replace(dotEnvPath)
dotEnvPath = templater.Replace(dotEnvPath, cache)
if dotEnvPath == "" {
continue
}

View File

@@ -60,11 +60,11 @@ func Read(
}
err = tf.Includes.Range(func(namespace string, include ast.Include) error {
tr := templater.Templater{Vars: tf.Vars}
cache := &templater.Cache{Vars: tf.Vars}
include = ast.Include{
Namespace: include.Namespace,
Taskfile: tr.Replace(include.Taskfile),
Dir: tr.Replace(include.Dir),
Taskfile: templater.Replace(include.Taskfile, cache),
Dir: templater.Replace(include.Dir, cache),
Optional: include.Optional,
Internal: include.Internal,
Aliases: include.Aliases,
@@ -72,7 +72,7 @@ func Read(
Vars: include.Vars,
BaseDir: include.BaseDir,
}
if err := tr.Err(); err != nil {
if err := cache.Err(); err != nil {
return err
}