RenovateとHandlebarsのテンプレート
Renovateでは様々な設定オプションや正規表現を用いるregex
managerでHandlebarsのテンプレートを使用できる箇所があります。
例えばPRのdescriptionの内容を追加できるprBodyNotes
などがありますが、RenovateがPRを作る際のブランチ名を決めるbranchName
もデフォルト値は次のようなテンプレートになっています。
"{{{branchPrefix}}}{{{additionalBranchPrefix}}}{{{branchTopic}}}"
次のリンクはテンプレート中で使えるフィールド(変数)のドキュメントです。
repology
datasourceと大文字小文字
さて、最近regex
managerと組み合わせてrepology
datasourceを使いたいことがありました。repology
datasourceの中で使われているRepologyのSingle project API*1 https://repology.org/api/v1/project/$project
の問い合わせでは、プロジェクト名が全て小文字である必要があります。
https://repology.org/api/v1/project/firefox
なら結果が得られますが、https://repology.org/api/v1/project/Firefox
だと結果は空になってしまいます。
正規表現で何かしらのファイルからキャプチャできるライブラリーの名称に大文字が含まれていると、そのままではrepology
datasourceで問い合わせることができません。またRenovateが組み込みで提供するHandlebarsのヘルパー(テンプレート内で使える関数のようなもの)は当時、次の6つでした。
stringToPrettyJSON
encodeURIComponent
replace
containsString
and
or
replace
を複数回使って個々のライブラリーを列挙するわけにもいかないので、lowercase
ヘルパーを追加しようと思い立ちました。まずIssueを立てて方針に問題がないかを確認してから、自分で実装まで行いました。
実装自体はJavaScriptのtoLowerCase()
を呼んでヘルパーとして登録するだけで至極簡単ですね。
まとめ
これで packageNameTemplate: "{{{lowercase depName}}}"
のようにして、キャプチャしたライブラリー名を小文字に変換してRepologyへの問い合わせに使えるようになりました。めでたしめでたし。
regex
managerとrepology
datasourceの組み合わせについては、後日また実用例の紹介をする予定です。乞うご期待(自分へのプレッシャー)。