歴史あるリポジトリとかで数千ファイルが既にあったりするケースのリポジトリに対して全体的にformatterをかけたりはしたくないけど直近で修正してるファイルはformatterをかけたいみたいなケースで使える小技。
GitHub scriptを自分たちで書いても良さそうだが既に良さげなActionが公開されているので使ってみる。
使ってみる
以下の例では修正されたファイルをjsonに入れている。ドキュメントを読んでるとスペース区切りとcsvでも取得できる模様。
- name: get-changed-files
id: files
uses: jitterbit/get-changed-files@v1
with:
format: 'json'
あとはjqなりなんだりでシェルスクリプトを書いて修正ファイル分ループさせつつformatterを実行すれば用件は達成できる。
- name: Run Formatter
run: |
pip install --upgrade black
readarray -t files <<<"$(jq -r '.[]' <<<'${{ steps.files.outputs.added_modified }}')"
for file in ${files[@]}; do
if [[ ${file##*.} == "py" ]]; then
black ${file}
fi
done
まとめ
今回はformatterを使った例を書いてみましたが修正ファイルが取れるのでそこから任意のラベルをPRなりに貼ったり他CI用のエンドポイントに渡したりと結構応用的に使えそうな小技の紹介でした。