Skip to content

Defer no longer supporting passing vars (not interpolation) #1909

@toby-griffiths

Description

@toby-griffiths

We are using for loops to deploy things for a list of tenants, but for some reason the deferred command is missing any vars interpolated into the vars of the deferred task.

Example…

version: '3'

tasks:
  loop:
    vars:
      NAMES: 'Ana Bob Charlie'
    cmds:
      - for: { var: NAMES }
        task: 'test'
        vars:
          NAME: '{{ .ITEM }}'

  test:
    requires:
      vars: [ 'NAME' ]
    cmds:
      - task: 'x'
        vars:
          NAME: 'During: {{.NAME}}'
      - defer:
          task: 'x'
          vars:
            NAME: 'Deferred: {{.NAME}}'

  x:
    vars:
      requires: ['NAME']
    cmd: 'echo "{{.NAME}}"'

Results in …

task: [x] echo "During: Ana"
During: Ana
task: [x] echo "Deferred: "
Deferred:
task: [x] echo "During: Bob"
During: Bob
task: [x] echo "Deferred: "
Deferred:
task: [x] echo "During: Charlie"
During: Charlie
task: [x] echo "Deferred: "
Deferred:

You'll see from this example that the regular commands display the names, but the deferred ones do not.

If you interpolate into a direct command, rather than a task this works fine…

tasks:
  loop:
    vars:
      NAMES: 'Ana Bob Charlie'
    cmds:
      - for: { var: NAMES }
        task: 'test'
        vars:
          NAME: '{{ .ITEM }}'

  test:
    requires:
      vars: [ 'NAME' ]
    cmds:
      - task: 'x'
        vars:
          NAME: 'During: {{.NAME}}'
      - defer: 'echo "Deferred: {{.NAME}}"'

  x:
    vars:
      requires: ['NAME']
    cmd: 'echo "{{.NAME}}"'

Resulting in…

$ task loop
task: [x] echo "During: Ana"
During: Ana
task: [test] echo "Deferred: Ana"
Deferred: Ana
task: [x] echo "During: Bob"
During: Bob
task: [test] echo "Deferred: Bob"
Deferred: Bob
task: [x] echo "During: Charlie"
During: Charlie
task: [test] echo "Deferred: Charlie"
Deferred: Charlie
  • Task version: v3.39.2 (h1:Zt7KXHmMNq5xWZ1ihphDb+n2zYLCo4BdRe09AnMMIgA=)
  • Operating system: MacOS 14.6.1 (23G93)
  • Experiments enabled: None

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions