美しいコミットを作成できるpummitのご紹介

2023/03/21に公開約5,100字

なんだこれは

写真のような綺麗な形のコミットメッセージを簡単に作成出来ちゃうGo製のツールです。
スターしていただくと嬉しい限りです。

https://github.com/HidemaruOwO/pummit

なぜこのツールを作成したのか 🧐

Qiitaに美しいコミットメッセージを作成する記事があるとQiitaので、その記事を呼んでみることにしました。
https://qiita.com/Jung0/items/0a9a7a97a2c17f92d3c5
この記事で紹介していたことを分かりやすく伝えると、タイトルにある通り絵文字を使ってコミットを区分して内容を理解しやすいようにするというTipsでした。
絵文字の使い方に関してはQiitaの記事を呼んでいただければ分かります。
この記事では以下のようなコミットメッセージのフォーマットが紹介されていました。

:books: READMEの修正


自分はこのフォーマットに一つだけ手を加え

:books: READMEの修正 (README.md)

何が変わったか分かりしたか?
これはコミットメッセージの末尾に変更が加えられたファイルのパスが加えられるようになりました。
この末尾にファイルパスを加えたいがだけに今回のpummitというツールを作成しました。
(後々便利さを追求して様々な変更を加えたけど、、、)

pummitのインストール 😊

Goが入っている場合はこちらを実行してください。

go install github.com/HidemaruOwO/pummit/pummit@v1.1.3

現在latestが削除したはずのv1.1.9になっております。
最新版をインストールする場合はv1.1.3をインストールしてください。

https://github.com/HidemaruOwO/pummit/releases

インストールされていない場合はReleaseから環境にあったファイルをダウンロードして、以下のコマンドを実行してください。

tar xzvf pummit**.tar.gz
sudo mv pummit /usr/local/bin

使い方 💨

pummitは2つの方法で使用することができます。
楽に入力できるわよ。

pummit emojiprefix 'subject'
# or
pummit 'emojiprefix subject'

# Example
pummit sparkles 'I am unko man'
# Run: git commit -m ':sparkles: I am unko man (path/to/added/file, path/to/added/file)'

pummit 'sparkles I am unko man'
# Run: git commit -m ':sparkles: I am unko man (path/to/added/file, path/to/added/file)'

絵文字プレフィックスのサンプル 🌟

pummitを使用するにあたって絵文字プレフィックスを知って置くことが必要なので、自分が使っている絵文字プレフィックスをどうぞ。
これはQiitaの記事で紹介されていたものに少し改変を加えたものです。
https://qiita.com/Jung0/items/0a9a7a97a2c17f92d3c5#2-テンプレ作り-絵文字を選ぶ

# ==================== Emojis ====================
# 🎉  :tada: 初めてのコミット(Initial Commit)
# ♻️   :recycle: マージ(Merge)
# 🔖  :bookmark: バージョンタグ(Version Tag)
# ✨  :sparkles: 新機能(New Feature)
# 🐛  :bug: バグ修正(Bagfix)
# 👀  :eyes: リファクタリング(Refactoring)
# 📚  :books: ドキュメント(Documentation)
# 🎨  :art: デザインUI/UX(Accessibility)
# 🐎  :horse: パフォーマンス(Performance)
# 🔧  :wrench: ツール(Tooling)
# 🚨  :rotating_light: テスト(Tests)
# 💩  :hankey: 非推奨追加(Deprecation)
# 🗑️  :wastebasket: 削除(Removal)
# 🚧  :construction: WIP(Work In Progress)
# ☃️  :snowman: 仕様変更

# ==================== Format ====================
# :emoji: Subject (Dir/AddedFile Dir/AddedFile)
#
# Commit body...

lazygitで使うには 🔍

lazygitを使っている方もいるでしょう。
lazygitとはGitをCLIでTUIで操作できるグラフィカルなクライアントです。
インストールすることをオススメします。
https://github.com/jesseduffield/lazygit
https://qiita.com/snyt45/items/32b1006490ae4da86766
lazygitでpummitを扱いたい場合は、以下のキーバインドを.config/lazygit/config.ymlに設定してください

customCommands:
- key: 'c'
  prompts:
    - type: 'input'
      title: 'Commit message'
      initialValue: ''
  command: "pummit '{{index .PromptResponses 0}}'"
  context: 'files'
  description: 'commit changes(Custom Command)'

エイリアス機能ってなに? 📎

例えばwastebasketを入力するのは少し大変ですが、エイリアス機能を使うとwbで簡単に入力できるようになります。

$ pummit wb モジュールの削除
# Result: :wastebasket: モジュールの削除 (path/to/added/file)

Add command

このコマンドはエイリアスを追加することが出来ます。

$ pummit alias add 's' 'sparkles'

この場合ではsというエイリアスを入力するだけでコミットメッセージのEmoji prefixにsparklesを代入できるようになります。

$ pummit s 新機能の追加
# Run: git commit -m ':sparkles: 新機能の追加 (path/to/added/file)'

Delete command

このコマンドはエイリアスを削除することが出来ます。

$ pummit alias delete s

この場合では、s=spaklesというエイリアスが登録されている前提でこのコマンドを実行した場合ssparklesの関連付けがなくなるため、以下のコマンドを実行してもEmoji prefixにはsしか代入されません。

$ pummit s 新機能の追加
# Run: git commmit -m ':s: 新機能の追加 (path/to/added/file)'

また引数に削除したいエイリアスを複数指定することが出来ます。

$ pummit alias delete s sm c h

Delete --all command

このコマンドは登録されているエイリアスを全て削除します。

$ pummit alias delete --all

List command

このコマンドは登録されているエイリアスを全て表示します。

$ pummit alias list

もし、エイリアスにs=sparklest=tadaが登録されている場合は以下のように出力されます。

📎 There is aliases
Alias : Prefix : Emoji
  s : sparkles : ✨ 
  t : tada : 🎉 

Reset command

このコマンドをエイリアスをリセットします。

$ pummit alias reset

もし、エイリアスがこのように沢山あって混乱するほどあったり、config.jsonを直接弄ってバグらせてしまったときのリカバリとして使うことが出来ます。

$ pummit alias list
 📎 There is aliases
Alias : Prefix : Emoji
----------------------
  hjjciiiisadsadasda : sparkles : ✨
  w : wrench : 🔧
  s : sparkles : ✨
  l : rotating_light : 🚨
  p : hankey : 💩
  wb : wastebasket : 🗑️
  c : construction : 🚧
  sm : snowman : ☃️
  hj : sparkles : ✨
  hjjjksda : sparkles : ✨
  hjjca : sparkles : ✨
  hjjciiiia : sparkles : ✨
  a : art : 🎨
  h : horse : 🐎
  r : recycle : ♻️
  t : tada : 🎉
  b : bug : 🐛
  e : eyes : 👀
  d : books : 📚

このようにエイリアスが混乱するほどある場合でも

$ pummit alias reset
> May I reset the aliases? :(Y/n) y
[INFO] Alias reseted

 📎 There is aliases
Alias : Prefix : Emoji
----------------------
  sm : snowman : ☃️
  h : horse : 🐎
  w : wrench : 🔧
  l : rotating_light : 🚨
  p : hankey : 💩
  wb : wastebasket : 🗑️
  c : construction : 🚧
  r : recycle : ♻️
  s : sparkles : ✨
  t : tada : 🎉
  e : eyes : 👀
  b : bug : 🐛
  d : books : 📚
  a : art : 🎨

コマンド一つでこのような綺麗な状態に戻せます。

Discussion

ログインするとコメントできます