🛠️

go-task に以前挙げた課題のワークアラウンド

2024/11/16に公開

tl;dr

  • 以前go-task に issue をあげたを書いた
  • EXIT_CODE が期待通りに渡らないのはこの際もういい
  • 元の課題はtaskfile.dev のメモに書いた defer に変数が渡せないということ
  • ワークアラウンドってほどでもないけど回避策としてグローバル変数を上書きする方法にした

元の課題について

  • task v3.39.0 以降、defer まわりの仕様が変わってしまった
  • EXIT_CODE を使えるようにしたため、ということになっているが、EXIT_CODE 自体も ignore_errors が有効だと消えてしまう
  • 関連して消えてしまった機能として、defer で呼び出すタスクに vars をつけることができなくなった
  • 複数のタスクから呼び出されるため、呼び出し元のタスクで個別に変数を渡していたが、使えなくなってしまったので、値が参照できず、処理がエラーになってしまう
  • json schema 的にはいけていたはずなのですぐ直るのかなと思っていた(が、直らないようだ)

ワークアラウンド

  • タスクから defer で変数が渡せないならグローバル変数にすればいいじゃない
  • タスクファイルのグローバル vars にデフォルトの変数を入れる
  • defer からは vars を消す
  • defer を呼び出しているタスク中でデフォルトの変数を上書きする
  • ちなみに仕様的にはグローバルを置かなくても親タスクが宣言していると伝搬するので大丈夫らしい
  • (親タスクの宣言忘れがあるとエラーになるので書くことにしている)

task について

Discussion