いろいろ備忘録日記

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

Task (go-task) メモ-24 (loop over task's source, ループ機能, タスクソースをループ)

関連記事

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

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

概要

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

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

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

いろいろなやり方が記載されていますが、今回はタスクのソースをループするやつを。

基本形は以下のようになります

task-name:
  cmds:
    - for: loop-source
      cmd: command {{ .ITEM }}

ループ中の項目は {{ .ITEM }} で参照できます。

サンプル

# https://taskfile.dev

version: '3'

tasks:
  default:
    deps: [clear-checksums]
    sources:
      - ./*.txt
      - ./*.go
    cmds:
      - for: sources
        cmd: stat {{ .ITEM }} | head -n 3
  clear-checksums:
    cmds:
      - rm -rf ./.task

あらかじめ、ディレクトリには以下のようなファイルが存在する状態です。

$ find . -print | sed -e "s;[^/]*/;|____;g;s;____|; |;g"
.
|____.gitignore
|____README.md
|____Taskfile.yml
|____hello.txt
|____main1.go
|____main2.go
|____world.txt

treeコマンドが存在しない場合でも似た出力を行うやり方 - いろいろ備忘録日記

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

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

$ task
task: [clear-checksums] rm -rf ./.task
task: [default] stat hello.txt | head -n 3
  File: hello.txt
  Size: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 2776629405  Links: 1
task: [default] stat main1.go | head -n 3
  File: main1.go
  Size: 85              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 2776629406  Links: 1
task: [default] stat main2.go | head -n 3
  File: main2.go
  Size: 85              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 2776629407  Links: 1
task: [default] stat world.txt | head -n 3
  File: world.txt
  Size: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 2776629408  Links: 1

参考情報

taskfile.dev

github.com

engineer.retty.me

zenn.dev

zenn.dev


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

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