Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

stackのコードを読む(2)

stack.yaml はどこで読むのか

Runner.hs#withBuildConfigAndLock なんてのがあって、ここで読んでいる。実際に読んでいるのは Config.hs#loadProjectConfigとかで、こいつが FromJSONのインスタンス になっていてパースしてる。設定の優先順位とかは この辺 で決まってる。設定は Monoid として定義されていて、ほとんどはFirstだが物によっては挙動が違うので注意

Resolver のロード

build を呼ぶお膳立てをしてくれる withBuildConfigAndLock から潜っていくと BuildConfigを読むための関数を作っている。ここで利用する loadBuildConfigBuildPlan#loadResolver の先で ダウンロードなどをしている

用意された lcLoadBuildConfig は buildが呼ばれる前に使われる 。この段階で MiniBuildPlanが決定されて コンパイラのバージョンが決まっている。