関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
これまでの Task に関する記事は上の関連記事をご参照ください。
Task には Wildcard arguments という機能があります。
これはタスク名の部分に * をつけることでこの部分にマッチする値を変数として受け取ることが出来る機能です。
Another way to parse arguments into a task is to use a wildcard in your task's name. Wildcards are denoted by an asterisk (*) and can be used multiple times in a task's name to pass in multiple arguments.
引数をタスクに解析する別の方法は、タスク名にワイルドカードを使用することです。ワイルドカードはアスタリスク(*)で示され、タスク名内で複数回使用することで複数の引数を渡すことができます。
例を上げると以下のような感じです。
mytask:*: vars: VALUE1: '{{index .MATCH 0}}' cmds: - echo "value is '{{.VALUE1}}'"
上の mytask:*: としている部分がワイルドカードです。
このようにタスク名を設定した状態でコマンドラインより
$ task mytask:helloworld
と実行すると内部で VALUE1 にアスタリスクの部分の値が設定され、以下のように出力されます。
$ task mytask:helloworld value is 'helloworld'
ワイルドカードは複数指定することが可能です。
mytask:*:*: vars: VALUE1: '{{index .MATCH 0}}' VALUE2: '{{index .MATCH 1}}'' cmds: - echo "value1 is '{{.VALUE1}}'" - echo "value2 is '{{.VALUE2}}'"
以下のように指定します。
$ task mytask:foo:bar value1 is 'foo' value2 is 'bar'
サンプル
# https://taskfile.dev version: '3' tasks: mytask:*: vars: VALUE1: '{{index .MATCH 0}}' cmds: - echo "value is '{{.VALUE1}}'" mytask-n:*:*: vars: VALUE1: '{{index .MATCH 0}}' VALUE2: '{{index .MATCH 1}}' cmds: - echo "values are '{{.VALUE1}}' and '{{.VALUE2}}'"
実行結果
$ task mytask:helloworld task: [mytask:helloworld] echo "value is 'helloworld'" value is 'helloworld' $ task "mytask:helloworld" task: [mytask:helloworld] echo "value is 'helloworld'" value is 'helloworld' $ task "mytask:hello world 11111" task: [mytask:hello world 11111] echo "value is 'hello world 11111'" value is 'hello world 11111' $ task mytask:hello world task: No tasks with description available. Try --list-all to list all tasks task: Task "world" does not exist $ task mytask-n:hello:world task: [mytask-n:hello:world] echo "values are 'hello' and 'world'" values are 'hello' and 'world' $ task "mytask-n:hello:world" task: [mytask-n:hello:world] echo "values are 'hello' and 'world'" values are 'hello' and 'world' $ task "mytask-n:hello world" task: No tasks with description available. Try --list-all to list all tasks task: Task "mytask-n:hello world" does not exist
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。