task icon indicating copy to clipboard operation
task copied to clipboard

Lazy Loading Vars

Open pixie79 opened this issue 1 year ago • 0 comments

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}}"}

pixie79 avatar Apr 03 '24 08:04 pixie79