【Git】commitzenをシェルスクリプトで実行

コマンドライン
スポンサーリンク

お疲れ様です。

今回は、commitzenに似た機能を実現できる、シェルスクリプトを作成しましたので、共有します。

commitzenの問題

コミットメッセージを標準化する方法として、「commitzen」が挙げられると思います。

GitHub - commitizen/cz-cli: The commitizen command line utility. #BlackLivesMatter
The commitizen command line utility. #BlackLivesMatter - GitHub - commitizen/cz-cli: The commitizen command line utility...

しかし、このツールは、毎回インストールする手間や、Node.jsベースで、プロジェクトによっては追加の依存関係が必要になったりします。

そのような際、別の選択肢を一から探すのは手間です。

そのため、今回、シェルスクリプトを作成して、いかなるプロジェクトでも、同様のコミットメッセージを導入できるようにしました。

スクリプト

#!/bin/bash

# コミットタイプを尋ねる
echo "コミットのタイプを選択してください:"
echo "1. feat (新機能)"
echo "2. fix (バグ修正)"
echo "3. docs (ドキュメントの変更)"
echo "4. style (コードのスタイル変更、フォーマット等)"
echo "5. refactor (リファクタリング)"
echo "6. test (テスト関連)"
echo "7. chore (その他、ビルドプロセスや補助ツールの変更)"
echo "8. perf (パフォーマンス改善)"
echo "9. build (ビルドシステムや外部依存関係の変更)"
echo "10. ci (CI設定ファイルやスクリプトの変更)"
read -p "番号を入力してください: " type

case $type in
  1) type="feat";;
  2) type="fix";;
  3) type="docs";;
  4) type="style";;
  5) type="refactor";;
  6) type="test";;
  7) type="chore";;
  8) type="perf";;
  9) type="build";;
  10) type="ci";;
  *) echo "無効な選択肢です"; exit 1;;
esac

# スコープを尋ねる
read -p "変更のスコープ (コンポーネントやファイル名等) を入力してください: " scope

# コミットメッセージの概要を尋ねる
read -p "コミットメッセージの概要を簡潔に記述してください: " summary

# コミットメッセージの本文を尋ねる(オプション)
read -p "詳細なコミットメッセージを入力してください (オプション): " body

# コミットメッセージを組み立てる
commit_message="$type($scope): $summary"
if [ -n "$body" ]; then
  commit_message="$commit_message\\n\\n$body"
fi

# コミットを実行
git commit -m "$commit_message"

実行方法

上記のスクリプトの実行方法は、下記のコマンドを入力してください。

// ファイル名が「commit.sh」の場合
chmod +x commit.sh

そして、以下のコマンドで、スクリプトを実行してコミットを行います。

./commit.sh

おわり

今回のスクリプトは、基本的な機能しか持っていません。

プロジェクトのニーズに合わせて、カスタマイズしていってください。