-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauto_update_version.mark.sh
93 lines (76 loc) · 1.34 KB
/
auto_update_version.mark.sh
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
gd=".git"
if [[ ! -d $gd ]]
then
{
echo "该脚本仅支持在git项目内运行!"
exit 1
}
fi
pcf=".git/hooks/post-commit"
if [[ -f $pcf ]]
then
{
echo "${pcf}文件已存在,请删除后再运行(谨慎)"
exit 1
}
fi
echo "正在安装脚本……"
cat << 'EOF' >> $pcf
commit=$(git show --no-patch --format=%B)
echo "最新一次提交:$commit"
if [[ $commit =~ ^\+\+\+ ]]
then
{
vt=3
vm="重磅版本升级!!!"
}
else
{
if [[ $commit =~ ^\+\+ ]]
then
{
vt=2
vm="里程碑版本!"
}
else
{
vt=1
vm="版本优化~"
}
fi
}
fi
echo "版本更新类型:$vm"
vf=VERSION.txt
if [[ ! -f $vf ]]
then
{
echo "当前环境不存在版本文件:$vf"
echo "正在新建……"
echo "0.0.0" >> $vf
echo "新建成功!"
}
else
{
echo "正在读取版本文件:$vf"
}
fi
echo "当前版本:$(head -1 $vf)"
echo "正在尝试更新……"
if [[ vt -eq 3 ]]
then
perl -pi -pe 's/(\d+)\.(\d+)\.(\d+)/($1+1).".$2.$3"/e' ${vf}
else
if [[ vt -eq 2 ]]
then
perl -pi -pe 's/(\d+)\.(\d+)\.(\d+)/"$1.".($2+1).".$3"/e' ${vf}
else
perl -pi -pe 's/(\d+)\.(\d+)\.(\d+)/"$1.$2.".($3+1)/e' ${vf}
fi
fi
echo "更新成功!"
echo "更新后版本:$(head -1 $vf)"
EOF
chmod +x $pcf
echo "脚本初始化完成!每次`git commit`后都会自动运行"
echo "MarkShawn2020 @github, 2021-04-22"