kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2024-02-06 - vscode で GitHub.vscode-github-actions を使っていると workflow YAML の言語が `github-actions-workflow` として認識されるようになるから 既存のYAML formatter 拡張でフックできなくなる #257

Closed kachick closed 5 months ago

kachick commented 5 months ago

TL;DR

何についてか / About

https://github.com/github/vscode-github-actions/issues/195

経緯 / History

https://github.com/google/yamlfmt/issues/129 で yamlfmt を workflow の fmt に使おうとしたら走らなかった。しばらくはまってたけど、vscode右下の言語設定見ると yaml ではない。これは他に入れてある拡張の https://github.com/github/vscode-github-actionshttps://github.com/github/vscode-github-actions/blob/02a4f12047a38409abce525e45650235499db371/package.json#L33-L41 でYAMLじゃないよという扱いをするように差し替えてて、https://github.com/bluebrown/vscode-extension-yamlfmt/blob/1c97b2d383f29defc2cc05e8e56c590dbb7ba7ec/package.json#L25-L27 の activationEvents に引っかからなくなっているようだった。vscode右下から言語解釈をYAMLに切り替えると案の定動く。 ここで厄介なのが、いかにも動きそうな次の設定が動かない点だった。

"[yaml]": {
    "editor.defaultFormatter": "bluebrown.yamlfmt"
},
"[github-actions-workflow]": {
    "editor.defaultFormatter": "bluebrown.yamlfmt"
},

且つてデファクトだった redhat 側はどうなんだと見に行くと同じような感じ https://github.com/redhat-developer/vscode-yaml/blob/e5a67a112a9a52eb8d8c991bf444fb309b2eb913/package.json#L41-L44 なので多分走らない。というのが冒頭の issue っぽい。あの issue には早い段階であたってたけど、なんでこういう問題になるのかというのを理解するのに時間がかかった。他の拡張側で activationEvents に onLanguage:github-actions-workflow と追加してやれば動きそうなんだけど、拡張から他の拡張に依存した何かは書きたくないだろうし、これはたしかに github/vscode-github-actions 側で解決してほしい話だなーという気はする

という、思うとか多分とかばっかしの話だった。メモ

kachick commented 2 months ago

Nix をパッケージマネージャだけじゃなくディストリビューションとしても NixOS 本格的に使おうかなーと思った https://github.com/kachick/dotfiles/pull/576 んだけど、自前でビルドしてないバイナリの類を走らせるのに何工夫か必要なので dprint の process plugin と相性が悪かった。 https://github.com/kachick/anylang-template/issues/92

こうなると機能面では不足してても yamlfmt ぐらいしか現状選択肢が無いので、vscode 拡張を fork して使うようにした。 https://github.com/kachick/vscode-extension-yamlfmt

一応上流にもPRを取り込んでは貰えた https://github.com/bluebrown/vscode-extension-yamlfmt/commit/e67d7e27f3bb544e4215ba14cce7533e79a22d37 のだけれど、当面自分のほうが触る頻度高そう&希望要件に差がありそうなのでフォーク後ぼちぼち育てている

kachick commented 1 week ago

yamlfmt ぐらいしか現状選択肢が無い

dprint の WASM plugin で CSSやHTMLのプラグイン書いてくれてる人が、YAML に対応するのも作ってくれた https://github.com/g-plane/pretty_yaml 。 コメントの扱いでリストや辞書の末尾コメントが次アイテム扱いされちゃう以外は良さげに動いてたので、じきにデファクト化しそうな気がする。言語問わずYAMLのフォーマッタはあまり無い認識・・・(その上で新規に作りたいモチベーション高そうなorgがあるとしたら https://github.com/yaml とかだとは思うけどyamlscriptのフォーマッタはまだない)