Dartのタスクランナーであるgrinderですが、タスクに引数を渡す方法がわかりませんでした。サンプルにも載っていないので、issueの中身を読み漁ったりした結果、とりあえず作れるということはわかりました。
main関数内で定義する
上記のリンクのコードを見る限り、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があるのですが、どうもまだ実装はされていないようです。残念。