🦀

メッセージをお嬢様風にしてcommitしてくれるCLIツールを作った

2022/06/23に公開

ojosama-commit

始めまして。しぐまと申します。
こんなツイートを見かけました。

https://twitter.com/jiro_saburomaru/status/1538044512861585409?s=20&t=UlsquA4tbY5NdKZvFsTI1g

何か作ってみたくなりました。

ということで
今回は、Rustという言語の勉強がてら、指定した文字列をお嬢様風にしてcommitしてくれるCLIツールを作りました。
とはいうものの実際にお嬢様風に変換する処理はjiro4989さまのojosamaというものを叩いているだけです。

GitHub

完成品のリンクです。
starしてもらえたらうれしいです!
https://github.com/Sigumaa/ojosama-commit

予告なしに非公開にする可能性があります。

使い方

インストール

リポジトリをクローンして、次のコマンドを実行してください。

$ cargo install --path .

コミット

$ ojo "コミットメッセージです!"
[hoge huga000] コミットメッセージですわ~~!
 ∞ file changed, ∞ insertions(+)

作るうえで大変だったこと

今回の完成品はコード自体は短いのですが、Rustでこのようなツールを作るのは初めてだったということもありところどころ詰まる箇所がありました。

APIへのリクエストはreqwestを使っています。
https://docs.rs/reqwest/latest/reqwest/
返ってきたデータをHashMapにぶち込んでいじくっています。もっと良い方法があれば教えてください。

    let res_text: HashMap<String, String> =
        serde_json::from_str(&res).expect("かえってきたデータの処理に失敗してしまいましたわ。");

    let commit_message = res_text
        .get("Result")
        .expect("メッセージを取り出すのに失敗してしまいましたわ。");

外部コマンドの実行にはstd::process::Commandを使用しました。
https://doc.rust-lang.org/std/process/struct.Command.html

最後に

簡単なプロジェクトかもしれませんが、結構勉強になり楽しかったです。
これからもRustでいろいろ作ってみたいと思いました。

PRお待ちしてます!
よろしくお願いします!

Discussion