コミットメッセージにつけたいprefix絵文字を選択して簡単にcommitできるシェルスクリプトを書いた


背景

コミットメッセージにprefix絵文字がついていると、PR見るときにちょっと楽しくなります。
だけど、つけようと思っても忘れがちだし、どの絵文字使おうか〜うん〜っていう時間こそ無駄だったので、「prefixにしたい絵文字が選んでcommitできる」コマンドを作りました😄
ちなみにaddからcommitまで一貫してこのコマンド一つで完結します。

repositoryはこちら👉github-convs

どんなコマンドか

今回作成したコマンド git-add-cmt をターミナルで入力すると以下のようなことができます。

  1. addしたいファイルを選択
  2. prefixとしてつけたいemojiを選択
  3. commitメッセージを入力

これで無事commitされました🎉

コード紹介

コード紹介といっても、たったこれだけ🎉

※ ターミナル上で「選択させる」ためにfzf を使っています

github-convs.zsh
git-add-cmt(){
  LF=$'\\\x0A' #改行
  git diff --color-words
  FILES=$(git status --short | sed '1s/^/ALL .'"$LF"'/' | fzf -m --prompt="SELECT_ADD_FILES (multi:tab) > " | tr '\n' ' ')
  EMOJI=$(echo $EMOJI_LIST | fzf -m --prompt="SELECT_PREFIX_EMOJI> " | cut -d ' ' -f 1)
  echo "\U1F4DD write commit message (quit ctr+C) >"
  read MSG
  git add $(echo $FILES | awk '{print $2}') && \
    echo $FILES && \
    echo "::::::::::::::::  add\U1F374  ::::::::::::::::" && \
    git commit -m $EMOJI$MSG && \
    echo ":::::::::::::::: commit\U1F35D ::::::::::::::::"
}

git statusから抽出した変更ファイルをfzfに食わせて、ユーザーに選択させるようにします。(fzf便利!)
emojiも同様に食わせて、cutコマンドでコミットメッセージにくっつけるときに必要な箇所のみ切り取っています。

emojiのテンプレートは こちら を参考にさせていただきました。

EMOJI_LIST="
🐛 バグ修正 
👍 機能改善
✨ 部分的な機能追加
🎉 盛大に祝うべき大きな機能追加
♻️ リファクタリング
🚿 不要な機能・使われなくなった機能の削除
💚 テストやCIの修正・改善
👕 Lintエラーの修正やコードスタイルの修正
🚀 パフォーマンス改善
🆙 依存パッケージなどのアップデート
🔒 新機能の公開範囲の制限
👮 セキュリティ関連の改善"

そしてそれらをaddしてcommit、といった要領です。

面倒なgitコマンド操作を自動でやってくれるし、emojiも簡単につけれちゃうよ💝というコマンドでした。
ちなみに他にもcheckoutとかPR一発で開けるのとかたくさんのコマンド作ってます😊