いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Task (go-task) メモ-27 (loop over task, ループ機能, ループ内で別タスクを呼び出し)

関連記事

Task (go-task) メモ-23 (loop over static list, ループ機能, 静的なリストをループ) - いろいろ備忘録日記

Task (go-task) メモ-24 (loop over task's source, ループ機能, タスクソースをループ) - いろいろ備忘録日記

Task (go-task) メモ-25 (loop over variables, ループ機能, 変数の値をループ) - いろいろ備忘録日記

Task (go-task) メモ-26 (renaming variable, ループ機能, ループ変数の名前を変更) - いろいろ備忘録日記

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

これまでの Task に関する記事は上の関連記事をご参照ください。

v3.28.0 から待望のループ機能が追加されました。これは嬉しいです。

ドキュメント上での記載は以下となります。

今回はループ内で別のタスクを呼び出すやり方について。

既に何かの処理を担当するタスクが存在している場合は、それを呼び出したほうが良いですね。

その場合、呼び出すサブタスクの中で使用している変数がある場合、ループ変数の現在の値を設定したくなります。

それも出来るようになっています。

サンプル

# https://taskfile.dev

version: "3"

tasks:
  default:
    vars:
      FILES:
        sh: ls -1
    cmds:
      - for: { var: FILES }
        task: proc
        vars:
          FILE: "{{ .ITEM }}"
  proc:
    internal: true
    cmds:
      - task: echo
        vars:
          TARGET: "{{ .FILE }}"
      - task: wc
        vars:
          TARGET: "{{ .FILE }}"
      - task: hr
  echo:
    internal: true
    cmds:
      - echo '{{ .TARGET }}'
  wc:
    internal: true
    cmds:
      - wc '{{ .TARGET }}'
  hr:
    internal: true
    silent: true
    cmds:
      - echo '---------------------------------'

実行すると以下のようになります。

$ task --version
Task version: v3.28.0 (h1:PGYGwevlGQdYrqhO6lLCYylC7YuGoQLlVwHkO42gf0I=)

$ task
task: [echo] echo 'README.md'
README.md
task: [wc] wc 'README.md'
  70  113 1207 README.md
---------------------------------
task: [echo] echo 'Taskfile.yml'
Taskfile.yml
task: [wc] wc 'Taskfile.yml'
 37  75 609 Taskfile.yml
---------------------------------

参考情報

taskfile.dev

github.com

engineer.retty.me

zenn.dev

zenn.dev


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。