プルリクで更新されたgemの一覧を出力する
Gemfile.lock
のdiffから更新されたgemを探す方法を調べたのでメモ
動作確認に使ったプルリク
GitHub APIでプルリクの情報を取得する
$ gh api '/repos/rails/rails/pulls/48955' --jq '.base.sha, .head.sha' 1e824aa8e0655b4717cf612e31010bdd808f4fdf 2d61a206f445ccd52645c8d47ce97de39a39ea9d
GitHub APIで変更前後のGemfileを取得する
$ gh api '/repos/rails/rails/contents/Gemfile.lock?ref=1e824aa8e0655b4717cf612e31010bdd808f4fdf' --jq '.content' | base64 --decode > Gemfile.lock.before $ gh api '/repos/rails/rails/contents/Gemfile.lock?ref=2d61a206f445ccd52645c8d47ce97de39a39ea9d' --jq '.content' | base64 --decode > Gemfile.lock.after
Gemfile.lock の差分を調べる
$ BUNDLE_GEMFILE=Gemfile.lock.before ruby -rbundler -e \ 'puts ["Gemfile.lock.after", "Gemfile.lock.before"].map { Bundler::LockfileParser.new(File.read(_1)).specs }.inject(:-)' nio4r (2.5.9) puma (6.3.0)
Gemfileがないディレクトリだと Could not locate Gemfile or .bundle/ directory
のエラーが出たので、 BUNDLE_GEMFILE
を指定することでエラーを回避している。