Scala 3のMatch Typesを使って型レベルsort

今までのScala 2だとAux Patternやimplicit色々使って書くようなやつが、3だとこうやって書けるよ、という話。

https://gist.github.com/xuwei-k/924c69482c972d7bac496922ed725f79

でもこれだと、型は生成出来ても、valueOfなどで実際の値が生成できないんだけど、どうすればいいのか少し悩んだけどよくわからなかったので、一旦諦めた・・・。

あと、TupleをHList的に使おうとしたけど、 (1, 2, 3)(Int, Int, Int) になってしまって、いい感じに扱えなかったので、わざわざHListを自作しました。 (Tupleのままいい感じにやる方法、なにかあるのか?)

続きを読む

scalafixを使ってclass名とfile名が異なっているものを自動修正したり警告を出す

というのを作ったので貼っておきます。 細かいところが雑ですが・・・。

Javaだとpublicなclassだと強制的に揃えないといけないですが、良くも悪くもScalaだと自由なので、揃えたい場合には、わざわざこういうのを作らないといけなくて不便。

file名ではなく、class名の方を合わせることによって修正したい場合もありえるでしょうけど、とりあえずfile名強制変更にしてあります。

TODO: packageとdirectory構造の検知と強制移動もやりたい。

https://gist.github.com/xuwei-k/ff0953aeb7624193f02ce26e517075c3

続きを読む

scala-stewardの使い方や動かし方の方法一覧

今までいくつかblog書いたが、どういうときに、どの方法使えば良いのか?が明らかにわかりにくいと思ったので、現状のまとめ

あと

https://tarao.hatenablog.com/entry/scala-renovate

scala-stewardを自分でホストするのは面倒だし, かと言ってGitHub Actionsで動くようにするのもそれなりに面倒なようです.

とあり、たしかにそうなんですが、べつに自分でホストしたり、自分でGitHub Actionsで動かす必要ないことも多々あるよ、という話 (とはいえ現状はpublic repoに限るか・・・?)

続きを読む

scala-stewardを独自に作ったGitHub App(bot)で動かす方法

というわけで、デフォルトの GITHUB_TOKEN 使う方法以外を模索している最中のメモ。

多少参考にしたblog

sue445.hatenablog.com

続きを読む

今までありがとうTravis CI、さよならTravis CI

しっかり調査してないですが、こういったCIサービスがほぼ存在しない時期にほぼほぼ最初に登場して、一時期明らかにデファクトスタンダードだったと思うので、昔からOSS活動している人ほど、とても多く利用してお世話になっていたと思うので、そういう人であればあるほど、この状況は、怒りではなく、悲しいというか残念というか、辛いと思うんですよね・・・。

続きを読む