Skip to content

Lazy Loading Vars #1575

@pixie79

Description

@pixie79

Given the task file below I would love to be able to run task list-prepared-statements and have it first run the department of list-work-groups before it trys to evaluate the output into the var WORK_GROUPS. Either that or better still a way to capture the output of the first task as a var for future use.

Thanks

version: 3

dotenv: [".env", "{{.ENV}}/.env.", "{{.HOME}}/.env"]

tasks:
  start-json-file:
    vars:
      FILE_NAME: '{{default "file_name.json" .FILE_NAME}}'
    cmds:
      - echo "[" > {{.FILE_NAME}}
    

  end-json-file:
    vars:
      FILE_NAME: '{{default "file_name.json" .FILE_NAME}}'
    cmds:
      - sed -i 's/}/},/' {{.FILE_NAME}}
      - sed -i '$ s/.$//' {{.FILE_NAME}}
      - echo "]" >> {{.FILE_NAME}}
      - cat {{.FILE_NAME}} | jq '.' > temp.json && mv temp.json {{.FILE_NAME}}

  list-work-groups:
    preconditions:
      - test {{.AWS_REGION}}
      - test {{.AWS_PROFILE}}
    cmds:
      - aws athena list-work-groups | jq -rc '.WorkGroups | .[].Name' > work-groups

  list-prepared-statements:
    preconditions:
      - test {{.AWS_REGION}}
      - test {{.AWS_PROFILE}}
    deps: [list-work-groups]
    vars:
      FILE_NAME: "prepared-statements.json"
      WORK_GROUPS: 
        sh: cat work-groups
    cmds:
      - task: start-json-file
        vars: {FILE_NAME: "{{.FILE_NAME}}"}
      - for: { var: WORK_GROUPS}
        cmd: echo "checking work group {{.ITEM}}"; aws athena list-prepared-statements --work-group $x >> {{.ITEM}}
      - task: end-json-file
        vars: {FILE_NAME: "{{.FILE_NAME}}"}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions