-
Notifications
You must be signed in to change notification settings - Fork 0
/
git-unipro
executable file
·101 lines (92 loc) · 2.82 KB
/
git-unipro
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/bash
echo "UniProject Git Tool"
subcommand="$1"
shift
msg_hook="#!/bin/bash
COMMIT_MSG=\$1
prefix=\$(head -n 1 \"\$COMMIT_MSG\" | awk '{ print \$1 }')
emoji=\"\"
case \$prefix in
\"fix:\")
emoji=\":bug:\"
;;
\"feat:\")
emoji=\":sparkles:\"
;;
\"uppkg:\")
emoji=\":arrow_up:\"
;;
\"docs:\")
emoji=\":memo:\"
;;
\"style:\")
emoji=\":art:\"
;;
\"refactor:\")
emoji=\":recycle:\"
;;
\"chore:\")
emoji=\":hammer:\"
;;
\"tag:\")
emoji=\":bookmark:\"
;;
*)
echo \"The specified prefix is undefined.\"
exit 1
;;
esac
awk -v prefix=\"\$prefix\" -v emoji=\"\$emoji\" 'NR==1 { sub(\"^\" prefix, emoji); print } NR!=1' \"\$COMMIT_MSG\" > tmpfile && mv tmpfile \"\$COMMIT_MSG\"
echo \$prefix
exit 0"
msg_template="# ==== Format ====
# \${prefix}: 実装の概要を50文字以下で記述
# ex)fix: ユーザー情報にnameが足りないのでnameを追加
#
# コミット本文(50文字で収まらない場合はこちらに)...
#一行目の上に#をつけずに入力してください。
#
# ==== Prefix ====
# feat 新規機能、新規ファイル追加
# fix バグ修正
# style 空白、セミコロン、行、コーディングフォーマットなどの修正
# refactor リファクタリング
# uppkg 依存関係のアップグレード
# chore ビルド、補助ツール、ライブラリ関連、開発環境変更、更新等
# docs ドキュメントのみ修正
# tag タグの作成
#
# ==== Rules ====
# 1. コミット本文を記述する場合は、概要とコミット本文の間に空行1行あける
# 2. 概要は50文字以下で記述する
# 3. 概要の末尾はピリオドで終わらない
# 4. 概要は命令法で記述する
# 5. 本文は72文字で改行する
# 6. 本文ではhowではなくwhatとwhyを記述する"
colab_script="git config --local core.hooksPath ./.githooks
git config --local commit.template .gitmessage
echo \"Success!!\""
case $subcommand in
i | init)
echo "Installing..."
echo "Creating .githooks Directory..."
mkdir -p .githooks
echo "Copying hooks files..."
echo -e "$msg_hook" > ./.githooks/commit-msg
echo "Copying .gitmessage file..."
echo -e "$msg_template" > .gitmessage
echo "Copying collaborater script..."
echo -e "$colab_script" > colab_script.sh
echo "Configuring git..."
eval "$colab_script"
echo "Configuring permission..."
chmod +x colab_script.sh
chmod +x ./.githooks/commit-msg
;;
--help)
echo "Usage: ./script.sh init - Initialize Git hooks and templates"
;;
*)
echo "Error: Invalid option or command."
;;
esac