KENTOLAB

vuePress-theme-reco KEN    2019 - 2023
KENTOLAB KENTOLAB

Choose mode

  • dark
  • auto
  • light
Home
Category
  • LIFE
  • TECH
Tag
About
  • me
TimeLine
Contact
  • instagram
  • twitter
  • contact form
author-avatar

KEN

31

Article

30

Tag

Home
Category
  • LIFE
  • TECH
Tag
About
  • me
TimeLine
Contact
  • instagram
  • twitter
  • contact form

gitコマンドがめんどくさいからシェルを作った

vuePress-theme-reco KEN    2019 - 2023

gitコマンドがめんどくさいからシェルを作った

KEN 2020-05-05 gitMacbookAir

# 概要

なんとかして作業効率向上を図りたいシリーズ。

gitで記事を管理しはじめたのはよいのだけれども、記事の投稿に至るまでがなかなか遠い。

何度も同じコマンドを叩くならシェルを書けばいいということを会社で学んだので、作ってみる。

# 作りたいもの

最低限欲しいなと思った機能は次のとおり

  • git status, git add, git commit, git push を実行したい
  • 引数でコミットコメントを渡したい
  • 引数はコメントだけにしたいので、ミス防止のチェックを入れたい
  • git addする前に確認する[y/n]を入れたい

その他のエラーは度外視...しちゃう

# できあがったもの

とりあえずの現状結果としてはこんな感じです。

#!/bin/bash

if [ $# -ne 1 ]; then # (1)引数の数チェック
	echo 'Require one argument.'
	exit 1
fi

var=$1

# (2)コマンドを変数へ
STATUS="git status"
ADD="git add -A"
COMMIT="git commit -a -m '${var}'"
PUSH="git push"

# (3)コマンドの実行
git status
echo -e "COMMAND : ${COMMIT}" # (4)入力コマンドの確認
read -p 'git add, commit and push run. OK? [y/n]:' YN # (5)確認メッセージ
if [ "${YN}" = "y" ]; then
	echo '------ script start ------'
	echo ${ADD}
	eval ${ADD}
	echo ${COMMIT}
	eval ${COMMIT}
	echo ${PUSH}
	eval ${PUSH}
    echo '------ script end --------'
else
	echo 'Command has canceled.'
	exit 1;
fi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# つまずいたところ

# 引数で渡すコメントの解釈

git commit時にコメントするとき、引数内に複数の文字列があるとそれぞれが別の引数として渡されてしまうため、引数多すぎのエラーになってしまう。

って、調べてみたらevalコマンドを使うのが良いと見た ので使ってみた。

もう少しちゃんと挙動を調べないといけないなぁ。

# evalコマンド

ここ によると、こういうコマンドらしい。

「eval」コマンドは、指定した文字列を評価後に連結して、現在のシェルに実行させます。主にシェルスクリプトや環境設定用のファイルで使用します

なるほどまさに使おうとしていた用途で合っていたという感じらしいです。

# メモ

  • 英文は適当
  • プッシュまでしちゃうのはやや暴挙かもしれない(自分だけのリポジトリだからいいけど)
  • 文法で何度もエラーになった。スペースの扱いが厳しい
  • 有事対応を入れないと後で事故になったら...と思うけどgitだしいいや感もある