mirror of
https://github.com/go-task/task.git
synced 2025-11-06 09:09:13 +02:00
With a recent commit, template evaluation for variables in tasks got
broken. This reindroudces temmplate evaluation in taks, and resolves
a series of issues that where previouisly present on master, such as:
- Taskvars did not get evaluated as templates.
- Taskvars would, in contrast to the documentation, _override_ task
variables for the taks called directly via `Executor.Run(args
...string)`. This caused different behaviour in the "default" task
v.s. other tasks.
This commit ensures:
- Priority order for variables is now according to the documentation,
also for the "default" task.
- Variables gets resolved in a particular order to ensure logical
access to varaibles on template compile time, and that template
compilation finds place _before_ resolution of dynamic variables.
This change also allows the following to work:
task:
vars:
A: "52"
B: "{{.A}}"
However, the following will always replace C with the uncompiled
`{{.A}}`:
task:
vars:
A: "52"
C: "{{.B}}"
B: "{{.A}}"
Several tests have also been added to prevent this feature from breaking
again. This should hopefully finally resolve issue #40.
38 lines
1.1 KiB
YAML
38 lines
1.1 KiB
YAML
default:
|
|
vars:
|
|
SPANISH: ¡Holla mundo!
|
|
PORTUGUESE: "{{.PORTUGUESE_HELLO_WORLD}}"
|
|
GERMAN: "Welt!"
|
|
deps:
|
|
- task: write-file
|
|
vars: {CONTENT: Dependence1, FILE: dep1.txt}
|
|
- task: write-file
|
|
vars: {CONTENT: Dependence2, FILE: dep2.txt}
|
|
- task: write-file
|
|
vars: {CONTENT: "{{.SPANISH|replace \"mundo\" \"dependencia\"}}", FILE: spanish-dep.txt}
|
|
cmds:
|
|
- task: write-file
|
|
vars: {CONTENT: Hello, FILE: hello.txt}
|
|
- task: write-file
|
|
vars: {CONTENT: "$echo 'World'", FILE: world.txt}
|
|
- task: write-file
|
|
vars: {CONTENT: "!", FILE: exclamation.txt}
|
|
- task: write-file
|
|
vars: {CONTENT: "{{.SPANISH}}", FILE: spanish.txt}
|
|
- task: write-file
|
|
vars: {CONTENT: "{{.PORTUGUESE}}", FILE: portuguese.txt}
|
|
- task: write-file
|
|
vars: {CONTENT: "{{.GERMAN}}", FILE: german.txt}
|
|
- task: non-default
|
|
|
|
write-file:
|
|
cmds:
|
|
- echo {{.CONTENT}} > {{.FILE}}
|
|
|
|
non-default:
|
|
vars:
|
|
PORTUGUESE: "{{.PORTUGUESE_HELLO_WORLD}}"
|
|
cmds:
|
|
- task: write-file
|
|
vars: {CONTENT: "{{.PORTUGUESE}}", FILE: portuguese2.txt}
|