mirror of
https://github.com/go-task/task.git
synced 2025-12-25 07:59:28 +01:00
When using `task FOO=bar` with a Taskfile containing
`FOO: '{{.FOO | default "foo"}}'`, the CLI value was being
overwritten by the Taskfile default.
Split the variable merging into two steps:
1. Merge CLI variables (FOO=bar) first so they override Taskfile vars
2. ReverseMerge special variables (CLI_ARGS, CLI_FORCE, etc.) so
they're available for templating in Taskfile vars
Fixes regression introduced in #2403.
Co-authored-by: Timothy Rule <timothy.rule@gmail.com>
59 lines
1.1 KiB
YAML
59 lines
1.1 KiB
YAML
version: '3'
|
|
|
|
dotenv: [.env]
|
|
|
|
vars:
|
|
VAR_A: A
|
|
VAR_B: '{{.VAR_A}}B'
|
|
VAR_C: '{{.VAR_B}}C'
|
|
|
|
VAR_1: {sh: echo 1}
|
|
VAR_2: {sh: 'echo "{{.VAR_1}}2"'}
|
|
VAR_3: {sh: 'echo "{{.VAR_2}}3"'}
|
|
|
|
tasks:
|
|
default:
|
|
- task: missing-var
|
|
- task: var-order
|
|
- task: dependent-sh
|
|
- task: with-call
|
|
- task: from-dot-env
|
|
|
|
missing-var: echo '{{.NON_EXISTING_VAR}}'
|
|
|
|
var-order:
|
|
vars:
|
|
VAR_D: '{{.VAR_C}}D'
|
|
VAR_E: '{{.VAR_D}}E'
|
|
VAR_F: '{{.VAR_E}}F'
|
|
cmds:
|
|
- echo '{{.VAR_F}}'
|
|
|
|
dependent-sh:
|
|
vars:
|
|
VAR_4: {sh: 'echo "{{.VAR_3}}4"'}
|
|
VAR_5: {sh: 'echo "{{.VAR_4}}5"'}
|
|
VAR_6: {sh: 'echo "{{.VAR_5}}6"'}
|
|
cmds:
|
|
- echo '{{.VAR_6}}'
|
|
|
|
with-call:
|
|
- task: called-task
|
|
vars:
|
|
ABC123: '{{.VAR_C}}{{.VAR_3}}'
|
|
|
|
called-task:
|
|
vars:
|
|
MESSAGE: Hi, {{.ABC123}}!
|
|
cmds:
|
|
- echo "{{.MESSAGE}}"
|
|
|
|
from-dot-env: echo '{{.DOT_ENV_VAR}}'
|
|
|
|
# Test that CLI variables take priority over Taskfile defaults
|
|
cli-var-priority:
|
|
vars:
|
|
CLI_VAR: '{{.CLI_VAR | default "default_value"}}'
|
|
cmds:
|
|
- echo '{{.CLI_VAR}}'
|