version: "3"

tasks:
  # Loop over a list of values
  loop-explicit:
    cmds:
      - for: ["a", "b", "c"]
        cmd: echo "{{.ITEM}}"

  # Loop over the task's sources
  loop-sources:
    sources:
      - foo.txt
      - bar.txt
    cmds:
      - for: sources
        cmd: cat "{{.ITEM}}"

  # Loop over the task's sources when globbed
  loop-sources-glob:
    sources:
      - "*.txt"
    cmds:
      - for: sources
        cmd: cat "{{.ITEM}}"

  # Loop over the contents of a variable
  loop-vars:
    vars:
      FOO: foo.txt,bar.txt
    cmds:
      - for:
          var: FOO
          split: ","
        cmd: cat "{{.ITEM}}"

  # Loop over the output of a command (auto splits on " ")
  loop-vars-sh:
    vars:
      FOO:
        sh: ls *.txt
    cmds:
      - for:
          var: FOO
        cmd: cat "{{.ITEM}}"

  # Loop over another task
  loop-task:
    vars:
      FOO: foo.txt bar.txt
    cmds:
      - for:
          var: FOO
        task: looped-task
        vars:
          FILE: "{{.ITEM}}"

  # Loop over another task with the variable named differently
  loop-task-as:
    vars:
      FOO: foo.txt bar.txt
    cmds:
      - for:
          var: FOO
          as: FILE
        task: looped-task
        vars:
          FILE: "{{.FILE}}"

  # Loop over different tasks using the variable
  loop-different-tasks:
    vars:
      FOO: "1 2 3"
    cmds:
      - for:
          var: FOO
        task: task-{{.ITEM}}

  looped-task:
    internal: true
    cmd: cat "{{.FILE}}"

  task-1:
    internal: true
    cmd: echo "1"

  task-2:
    internal: true
    cmd: echo "2"

  task-3:
    internal: true
    cmd: echo "3"
