うっかりミスを技術で防止
僕は普段よくうっかりミスをします。
CLI上での時の流れは無慈悲なもので、エンター1つでけっこう面倒なことになったりします。
そんな無慈悲な時間を少しでも減らすために少し苦労をしてみましょう。
git stashを慎重に
git stashコマンド使ってますか?
僕はこのコマンドでよく痛い思いをしました。
git stash pop ←これを連続で打ってCONFLICT起こしたりもしました。とても面倒です。
ですので今回はgit stashをもっと対話的に実行しようということでShellでコマンドを自作しました。
普段はGoのcobraなどを使っているのでShellには馴染みがなかったので今回色々勉強になりました。
[2020/09/05更新] homebrewでコマンドを配布中
homebrewを通してこのコマンドを配布しておりますので、よろしければ使ってみてください。
対話型コマンドのキーとなるread
うっかり屋さんはひとりで突っ走りがちですので、「〜だけど大丈夫?」みたいなワンクッションあると安心します。
それを実現するためにread構文を使って対話型のコマンドを実現できます。
例えば下は、stashしたブランチと現在いるブランチが違った時に確認をする処理です。
if [ $CURRENT_BRANCH != $TARGET_BRANCH ]; then
echo "----------------------------------"
echo "取り出そうとしているstashは現在のブランチの作業ではないです。取り出しますか?[y/N]"
read IS_POP
case $IS_POP in
[yY])
echo "-------------------------------"
echo "選択したstashを残しますか? [y/N]"
read IS_REMAIN_STASH
case $IS_REMAIN_STASH in
[yY]) eval git stash apply ${TARGET_STASH%%:*};;
[nN]) eval git stash pop ${TARGET_STASH%%:*};;
esac
;;
[nN]) exit;;
esac
read [変数名]でユーザからの入力を受け取り、その情報を元にcaseで分岐しています。
入力の手間を少しでも省いてタイポを防止する
うっかり屋さんは誰から見られているわけでもないのにすごく焦ります。
異常なほどタイポします。
ですので、例えば
git stash save "hogehoge"
と打つ場合は"とか高確率でタイポします。
そんなタイポを減らすために以下のような処理を書くことが出来ます。
if [ "$1" = "save" ]; then
echo "-----------------------------"
echo "Stash内容の説明を入力"
read STASH_MESSAGE
eval git stash save "$STASH_MESSAGE"
こんな感じで引数に何かを渡すだけでメッセージの部分を形成して良い感じのコマンドに直してくれる。
やっていることは大したことありませんが、かなと英字を頻繁に入れ替える必要もなくなるので少し便利です。