Files
task/testdata/requires/Taskfile.yml
Valentin Maerten f0f61b41ac feat(requires): support variable references in enum constraints
Add support for referencing variables in enum validation:

```yaml
vars:
  ALLOWED_ENVS: ["dev", "staging", "prod"]

tasks:
  deploy:
    requires:
      vars:
        - name: ENV
          enum:
            ref: .ALLOWED_ENVS
```

This allows enum values to be defined once and reused, or computed
dynamically using template expressions like `| fromYaml`.

Changes:
- Add Enum type with Ref/Value fields in taskfile/ast/requires.go
- Add resolveEnumRefs() to resolve refs at task compilation time
- Add getEnumValues() helper in requires.go
- Only resolve enum refs when shell variables are evaluated
2026-01-25 15:17:40 +01:00

64 lines
1.0 KiB
YAML

version: '3'
vars:
ALLOWED_ENVS: ["dev", "staging", "prod"]
NOT_A_LIST: "this is a string"
tasks:
default:
- task: missing-var
missing-var:
requires:
vars:
- FOO
cmd: echo "{{.FOO}}"
var-defined-in-task:
vars:
FOO: bar
requires:
vars:
- FOO
cmd: echo "{{.FOO}}"
validation-var-dynamic:
vars:
FOO:
sh: echo "one"
requires:
vars:
- name: FOO
enum: ['one', 'two']
validation-var:
requires:
vars:
- ENV
- name: FOO
enum: ['one', 'two']
require-before-compile:
requires:
vars: [ MY_VAR ]
cmd: |
{{range .MY_VAR | splitList " " }}
echo {{.}}
{{end}}
validation-var-ref:
requires:
vars:
- name: ENV
enum:
ref: .ALLOWED_ENVS
cmd: echo "{{.ENV}}"
validation-var-ref-invalid:
requires:
vars:
- name: VALUE
enum:
ref: .NOT_A_LIST
cmd: echo "{{.VALUE}}"