mirror of
https://github.com/go-task/task.git
synced 2026-02-25 04:33:43 +01:00
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
64 lines
1.0 KiB
YAML
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}}"
|