mirror of
https://github.com/go-task/task.git
synced 2025-12-25 16:09:26 +01: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.
56 lines
1.5 KiB
YAML
56 lines
1.5 KiB
YAML
default:
|
|
deps: [hello]
|
|
|
|
hello:
|
|
deps: [set-equal]
|
|
cmds:
|
|
- echo {{.FOO}} > foo.txt
|
|
- echo {{.BAR}} > bar.txt
|
|
- echo {{.BAZ}} > baz.txt
|
|
- echo '{{.TMPL_FOO}}' > tmpl_foo.txt
|
|
- echo '{{.TMPL_BAR}}' > tmpl_bar.txt
|
|
- echo '{{.TMPL_FOO2}}' > tmpl_foo2.txt
|
|
- echo '{{.TMPL_BAR2}}' > tmpl_bar2.txt
|
|
- echo '{{.SHTMPL_FOO}}' > shtmpl_foo.txt
|
|
- echo '{{.SHTMPL_FOO2}}' > shtmpl_foo2.txt
|
|
- echo '{{.NESTEDTMPL_FOO}}' > nestedtmpl_foo.txt
|
|
- echo '{{.NESTEDTMPL_FOO2}}' > nestedtmpl_foo2.txt
|
|
- echo {{.FOO2}} > foo2.txt
|
|
- echo {{.BAR2}} > bar2.txt
|
|
- echo {{.BAZ2}} > baz2.txt
|
|
- echo '{{.TMPL2_FOO}}' > tmpl2_foo.txt
|
|
- echo '{{.TMPL2_BAR}}' > tmpl2_bar.txt
|
|
- echo '{{.TMPL2_FOO2}}' > tmpl2_foo2.txt
|
|
- echo '{{.TMPL2_BAR2}}' > tmpl2_bar2.txt
|
|
- echo '{{.SHTMPL2_FOO}}' > shtmpl2_foo.txt
|
|
- echo '{{.SHTMPL2_FOO2}}' > shtmpl2_foo2.txt
|
|
- echo '{{.NESTEDTMPL2_FOO2}}' > nestedtmpl2_foo2.txt
|
|
- echo {{.EQUAL}} > equal.txt
|
|
- echo {{.OVERRIDE}} > override.txt
|
|
vars:
|
|
FOO: foo
|
|
BAR: $echo bar
|
|
BAZ:
|
|
sh: echo baz
|
|
TMPL_FOO: "{{.FOO}}"
|
|
TMPL_BAR: "{{.BAR}}"
|
|
TMPL_FOO2: "{{.FOO2}}"
|
|
TMPL_BAR2: "{{.BAR2}}"
|
|
SHTMPL_FOO:
|
|
sh: "echo '{{.FOO}}'"
|
|
SHTMPL_FOO2:
|
|
sh: "echo '{{.FOO2}}'"
|
|
NESTEDTMPL_FOO: "{{.TMPL_FOO}}"
|
|
NESTEDTMPL_FOO2: "{{.TMPL2_FOO2}}"
|
|
OVERRIDE: "bar"
|
|
|
|
set-equal:
|
|
set: EQUAL
|
|
cmds:
|
|
- echo foo=bar
|
|
|
|
invalid-var-tmpl:
|
|
vars:
|
|
CHARS: "abcd"
|
|
INVALID: "{{range .CHARS}}no end"
|