Closed kachick closed 2 years ago
ドキュメントは有るけれど、具体的にどういうときにどのオプション使ってどう書くと良いみたいなのがわからず手探りになることが多い。 まず例は本家の config:base を見ておくと最低限はわかる気がする。
後は github の コード検索で、なんか頑張って config 書いてそうなのを探してみる。(人力 copilot) https://github.com/search?q=versioningTemplate+extractVersionTemplate+extension%3Ajson+extension%3Ajson5+language%3AJSON5+language%3AJSON5&type=Code&ref=advsearch&l=JSON5&l=JSON5 とかで、 extractVersionTemplate と versioningTemplate の組合せ方がわかる・・・かもしれない
そして Google が出している定数時間?でマッチが終わるらしい安全目な RE2 という PCRE のサブセットみたいなので正規表現を書く必要がある。これが各言語の標準とは異なるので別途確認環境用意しなければ行けないのが面倒。そして本来RE2ではNOT SUPPORTEDな named capture の syntax が動く理由がよくわからない。多分 npm の re2 package かなんかで吸収してるのかな・・・とりあえず Ruby binding で確認する時は (?<name>foo) を (?P<name>foo) に変えて試している。 その他の制限はもう兎に角 https://github.com/google/re2/wiki/Syntax を読む。 Renovate official では https://regex101.com での確認が推奨されている。確かに便利だし ECMA Script のエスケープを適用するのに使えるんだけど、ECMA Official ってどっかから RE2 になったわけでは無いよね・・・? https://news.ycombinator.com/item?id=18551151
(?<name>foo)
(?P<name>foo)
そして結局どこまで行ってもわからないことはわからない。例えば github-releases と github-tags の違いはなんなのか? なんで ruby-version とか特別に用意されているのか。ruby/ruby とか Gauche みたいに tag が dot じゃなくて hyphen で区切られている時はどうすればいいのか。 わからない。わからないけれど Renovate はOSSなのでなんとなくそれっぽいものを読むことは出来る。多分この辺
https://github.com/renovatebot/renovate/tree/2e957baed962d65cb8e40136edc142af6014ad95/lib/modules
特に自作 regexManagers で頑張る時には datasource と versioning を確認する頻度が多い。
しかしぱっと見 https://github.com/renovatebot/renovate/blob/2e957baed962d65cb8e40136edc142af6014ad95/lib/modules/datasource/github-releases/index.ts#L59 見ると、 releases 側でも tag_name を引いているような・・・タイトルとかじゃないんかー。そしたら常に github-tags 使えば良いのでは?と思わなくもないけど、 release だされた tag だけを追いたい時用とかなのかなー。わからない、何もわからない
ruby-versionに関しては ruby-lang.org から取得しているのがわかる。GitHub で hosting する前からの事情?かもしれないし、ハイフン区切りを避ける策なのかもしんない。出来ればこの辺をプラグイン的に自分で書きたい・・・書けるのか? config だけで頑張るの辛いけど、self-hosting しない限りはやっぱ難しいのかな。
ドキュメントは有るけれど、具体的にどういうときにどのオプション使ってどう書くと良いみたいなのがわからず手探りになることが多い。 まず例は本家の config:base を見ておくと最低限はわかる気がする。
後は github の コード検索で、なんか頑張って config 書いてそうなのを探してみる。(人力 copilot) https://github.com/search?q=versioningTemplate+extractVersionTemplate+extension%3Ajson+extension%3Ajson5+language%3AJSON5+language%3AJSON5&type=Code&ref=advsearch&l=JSON5&l=JSON5 とかで、 extractVersionTemplate と versioningTemplate の組合せ方がわかる・・・かもしれない
そして Google が出している定数時間?でマッチが終わるらしい安全目な RE2 という PCRE のサブセットみたいなので正規表現を書く必要がある。これが各言語の標準とは異なるので別途確認環境用意しなければ行けないのが面倒。そして本来RE2ではNOT SUPPORTEDな named capture の syntax が動く理由がよくわからない。多分 npm の re2 package かなんかで吸収してるのかな・・・とりあえず Ruby binding で確認する時は
(?<name>foo)
を(?P<name>foo)
に変えて試している。 その他の制限はもう兎に角 https://github.com/google/re2/wiki/Syntax を読む。 Renovate official では https://regex101.com での確認が推奨されている。確かに便利だし ECMA Script のエスケープを適用するのに使えるんだけど、ECMA Official ってどっかから RE2 になったわけでは無いよね・・・? https://news.ycombinator.com/item?id=18551151そして結局どこまで行ってもわからないことはわからない。例えば github-releases と github-tags の違いはなんなのか? なんで ruby-version とか特別に用意されているのか。ruby/ruby とか Gauche みたいに tag が dot じゃなくて hyphen で区切られている時はどうすればいいのか。 わからない。わからないけれど Renovate はOSSなのでなんとなくそれっぽいものを読むことは出来る。多分この辺
https://github.com/renovatebot/renovate/tree/2e957baed962d65cb8e40136edc142af6014ad95/lib/modules
特に自作 regexManagers で頑張る時には datasource と versioning を確認する頻度が多い。
しかしぱっと見 https://github.com/renovatebot/renovate/blob/2e957baed962d65cb8e40136edc142af6014ad95/lib/modules/datasource/github-releases/index.ts#L59 見ると、 releases 側でも tag_name を引いているような・・・タイトルとかじゃないんかー。そしたら常に github-tags 使えば良いのでは?と思わなくもないけど、 release だされた tag だけを追いたい時用とかなのかなー。わからない、何もわからない
ruby-versionに関しては ruby-lang.org から取得しているのがわかる。GitHub で hosting する前からの事情?かもしれないし、ハイフン区切りを避ける策なのかもしんない。出来ればこの辺をプラグイン的に自分で書きたい・・・書けるのか? config だけで頑張るの辛いけど、self-hosting しない限りはやっぱ難しいのかな。