完成系がこちら
push_staging_color
という自分で作ったコマンドを打つと
git系のコマンドが連続で実行されてますね。
では作っていきましょう
fishには関数を作るための専用ファイルがある
Macはこちらのディレクトリにあるはず
.config/fish/functions/
この中に コマンド名.fish
っていうファイルを作って関数を書いていけば自作のコマンドで実行できるはずだ。
ファイルを作ってみる
自分は今回stagingというブランチに自分の開発しているbrachをmergeするまでのコマンドを書いていくつもりなのでstagingという名前にしました。
中身を書いてみる
今回やりたいことは
自分で入力したブランチ名を叩けば、git fetchとかgit mergeとか自動的にやってくれるようにします。
まず自分のブランチ名を入力したいので git branch
でブランチ名を表示させてコピペできるようにします。
その後、ブランチ名入力モードに移動し、ブランチ名を入力するとgitのあれこれを実行させます。
コードはこんな感じになります。
function push_staging
git branch \
&& read branchName \
&& git checkout master \
&& git fetch \
&& git branch -D staging \
&& git checkout -b staging origin/staging \
&& git merge "$branchName"
end
function push_staging_display
echo "> git branch" \ && git branch \
&& read branchName \
&& echo "> git checkout master" \ && git checkout master \
&& echo "> git fetch" \ && git fetch \
&& echo "> git branch -D staging" \ && git branch -D staging \
&& echo "> git checkout -b staging origin/staging" \ && git checkout -b staging origin/staging \
&& echo "> git merge <branchName>" \ && git merge "$branchName"
end
function push_staging_color
echo -e "\e[93m> git branch \e[97m" \ && git branch \
&& read branchName \
&& echo -e "\e[93m> git checkout master \e[97m" \ && git checkout master \
&& echo -e "\e[93m> git fetch \e[97m" \ && git fetch \
&& echo -e "\e[93m> git branch -D staging \e[97m" \ && git branch -D staging \
&& echo -e "\e[93m> git checkout -b staging origin/staging \e[97m" \ && git checkout -b staging origin/staging \
&& echo -e "\e[93m> git merge <branchName> \e[97m" \ && git merge "$branchName"
end
下記のコマンドで実行できます。
staging
push_staging_color
処理内容の解説
・ ご覧の通り三種類の関数があります。
・それぞれの違いを見るために実際にコマンドを叩いてみましょう。
・ functionのあとの名前が実際の実行コマンドになります。
・ 一番最初のfunctionのコマンドを叩いてみましょう
・ ファイル名を叩きます。自分の場合はstagingです。
・ その後functionのあとのコマンドを打ちます。
・ やりたいことは全部実行してくれましたが何が実行されたのかあまりわからないですね。
・ ここでもしエラーが出た時にどのコマンドでエラーがでるのかわからないのが不便ですね。
・ コマンドを実装する前に実行コマンドを表示させるようにしたいですね。
・ 実行コマンドが表示されましたね。
・ 一つ目との関数との違いはechoを入れるか入れないかですね。
・ ただechoした内容とその結果が同じ色なので見づらいですね。
・ echo した内容の色付けをしたいですね。
echoするときに色をつけるようにしました。
今回はfishでの関数の作り方と使い方を参考程度にアップしました。
処理内容やコードの書き方はご自身で検索してみてください。
今後、気が向いたら下記のコードの意味を解説していこうかなって考えています。
\
&&
read 変数名
$変数名