概要

git-cz-rsのマイナーリリースで追加した内容をまとめます。

実装したこと

詳しくは、リリースノートの詳細を見てください。

主な変更点は次の3つです。

  • 文字数制限機能を追加:cz.jsonにsubject.max_commit_message_sizeを指定することでコミットメッセージのサイズを制限しました。
  • リファクタリング:ファイル分割と責務の分離
  • 開発環境の整備:VS Codeの推奨拡張機能設定・動作確認方法をCONTRIBUTING.mdに記載

文字数制限機能

研究でこのツールを利用していた際、コミットメッセージが長く複雑になることがありました。 そのため、文字数制限機能を追加することにしました。

v1.1.0からは、cz.jsonに"subject"オプションを追加し、 その中の"max_commit_message"オプションで最大文字数を追加することで、 入力可能な最大文字数を制限することが可能です。

cz.jsonに"subject"オプションを設定する例

文字数制限機能の動作例

リファクタリング

v1.0.0では、main.rsにロジックの全てが実装してあり、機能追加が行いにくかったため、リファクタリングを行いました。 具体的には、次のように責務を分割しました。

  • driver.rs: コンピュータとのI/O処理
  • adapter.rs: 人間とのI/O処理
  • usecase.rs: アプリケーション処理
  • entity.rs: コミットで成形する元のデータ構造
  • main.rs: 全体の結合処理

開発環境整備

筆者はVS Codeで開発しているため、推奨拡張機能を.vscode/extensions.jsonに追加しました1。

また、動作確認方法をCONTRIBUTING.mdに追記しました2。 CLIツールの開発では対話処理が重要になるため、実際の動作確認をしっかり行うほうが、開発しやすくなると考えたためです。

学んだこと

調査段階で、cargo installをするときにGitと連携してinstallできることを知りました3。

v1.0.0までは、リポジトリをクローンしてから、リポジトリルートでcargo install --path .を実行する方法をREADME.mdに記載していました。 しかし、cargoコマンドに--gitオプションを追加することで、クローンせずにインストール可能であることを知りました。

cargo install --git https://github.com/yoshiyuki-140/git-cz-rs.git

まとめ

git-cz-rsのv1.1.0で追加した機能をまとめました。 主に3つの修正と機能追加を行い、よりRustのドメイン知識を深めることが出来ました。