patorashのブログ

方向性はまだない

grinderのタスクに引数を渡す

Dartのタスクランナーであるgrinderですが、タスクに引数を渡す方法がわかりませんでした。サンプルにも載っていないので、issueの中身を読み漁ったりした結果、とりあえず作れるということはわかりました。

main関数内で定義する

github.com

上記のリンクのコードを見る限り、main関数内で、add_task関数を使って定義していくのがよさそうです。

main(args) {
  addTask(new GrinderTask('foo', taskFunction: () async {
    var arg1 = context.invocation.options['arg1'];
    var arg2 = context.invocation.options['arg2'];
    // 何らかの処理を行う
  }, options: [new Option(name: 'arg1'), new Option(name: 'arg2')]
  ));

  grind(args);
}

こうすると、

grind foo --arg1=bar --arg2=baz

という形で引数を渡せるようになりました。

タスクの引数にアノテーションを使って定義できるようにする、みたいなissueがあるのですが、どうもまだ実装はされていないようです。残念。

github.com