hitode909の日記

趣味はマリンスポーツですの日記です

update-cpanfileがアップデート内容の説明を生成できるようにした

update-cpanfileはこないだ作ったCLIツールで、古びたcpanfileを更新するツール。手動で好きなときに使っても良いし、CIで定期的に動かしても良い。
うちのチームではすでに実用していて、CIから1日1個ライブラリを更新して、レビュワーをランダムアサインしてマージしていく、という体制で毎日利用していて、とはいえ1日1個では全然終わらないので、タイミングを見て人間がまとめて更新したりもしている。手動でアップデートするときにも各ライブラリの最新バージョンを探して回る手間が省けてたいへん便利。


これまでは「update cpanfile」っていう素朴なメッセージを出すしかなくて、見栄えが悪かったのを、何をどのバージョンにしましたよってPull Requestの説明欄に書けるようにした。
f:id:hitode909:20200818002149p:plain
Update CPAN::DistnameInfo, CPAN::PackageDetails, Carton, Cwd, File::Copy::Recursive, File::Spec::Functions, IO::String, JSON, LWP::UserAgent, Module::CPANfile, Module::CPANfile::Writer, Module::CoreList, Path::Class, Test2::V0, Test::WWW::Stub by hitode909 · Pull Request #20 · hitode909/App-UpdateCPANfile · GitHub


update-cpanfile単体で実現しているわけではなくて、JSONを書き出してGitHub Actions側でJSONをテキストに変換することで実現している。

  1. update-cpanfileが--output jsonというオプションを見て、JSONを書き出す
  2. 出力のoutputに設定する
  3. タイトル用にはライブラリ名を, でつないでoutputに設定
  4. 本文用にはライブラリをMarkdownにしてmetacpanへのリンクもくっつけてoutputに設定
  5. 3,4のoutputを使ってPull Requestを送る

という5ステップで実現できた。先週金曜にid:utgwkkと話していたら、outputとしてとりあえずJSONを出力しておけば、あとは好きに加工できて良いのではって意見をもらえたのでやってみたらうまくいってよかった。ちなみに、outputで改行を使いたいときは%0Aを出力すれば良いようだった。


こういうGitHub Actions用のYAMLを用意するとお手元のプロジェクトでもすぐに導入できるのでご利用ください。

参考

こっちの記事を読んでない人はまず読んでください。
blog.sushi.money