-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
Copy pathcommon.sh
130 lines (111 loc) · 3.16 KB
/
common.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env bash
RESTORE=$(echo -en '\033[0m')
RED=$(echo -en '\033[00;31m')
GREEN=$(echo -en '\033[00;32m')
YELLOW=$(echo -en '\033[00;33m')
BLUE=$(echo -en '\033[00;34m')
MAGENTA=$(echo -en '\033[00;35m')
PURPLE=$(echo -en '\033[00;35m')
CYAN=$(echo -en '\033[00;36m')
LIGHTGRAY=$(echo -en '\033[00;37m')
LRED=$(echo -en '\033[01;31m')
LGREEN=$(echo -en '\033[01;32m')
LYELLOW=$(echo -en '\033[01;33m')
LBLUE=$(echo -en '\033[01;34m')
LMAGENTA=$(echo -en '\033[01;35m')
LPURPLE=$(echo -en '\033[01;35m')
LCYAN=$(echo -en '\033[01;36m')
WHITE=$(echo -en '\033[01;37m')
function info () {
echo -e $*
}
function notice () {
echo -e "${CYAN}$*${RESTORE}"
}
function warning () {
echo -e "${YELLOW}$*${RESTORE}"
}
function error () {
echo -e "${RED}$*${RESTORE}"
}
function prepareWorkingDir () {
read -e -p "Your upstream git remote is? [origin]"
export remote=${REPLY:="origin"}
info "Fetching latest changes and prune ${LGREEN}$remote${RESTORE}..."
git fetch -p -t "$remote" || { error "It is not able to fetch codes from your $remote, check if there is any issue."; exit 1; }
git remote prune "$remote"
info "${GREEN}Done.${RESTORE}"
}
function isValidVersion () {
echo "$1" | awk '/^[0-9]+\.[0-9]+(\.[0-9]+){0,2}(-rc[0-9]+|-beta[0-9]+)?$/ {print $0}'
}
function isBetaVersion () {
echo "$1" | awk '/^[0-9]+\.[0-9]+(\.[0-9]+){0,2}-beta[0-9]+$/ {print $0}'
}
function isRCVersion () {
echo "$1" | awk '/^[0-9]+\.[0-9]+(\.[0-9]+){0,2}-rc[0-9]+$/ {print $0}'
}
function latestVersion () {
git tag -l | awk '/^0\.[0-9]+(\.[0-9]+){0,2}(-rc[0-9]+|-beta[0-9]+)?$/ { print $0 }' | sort -rV | head -n 1
}
function latestNonRCVersion () {
git tag -l | awk '/^0\.[0-9]+(\.[0-9]+){0,2}(-beta[0-9]+)?$/ { print $0 }' | sort -rV | head -n 1
}
function betaNumber () {
echo "$1" | awk -F 'beta' '{print $2}'
}
function rcNumber () {
echo "$1" | awk -F 'rc' '{print $2}'
}
function gitRepoModified () {
git status --short | awk '/^[ M][ M] / { print $0 }'
}
function stashLocalChanges () {
if [ "$(gitRepoModified)" ]; then
read -e -p "Your working directory is modified, stash it? [Y/n]" -n 1
shouldStash=${REPLY:=y}
if [ ${shouldStash,,} = y ]; then
git stash
else
info "Change ignored."
fi
fi
}
function increaseBetaVersion () {
if [ $(isRCVersion "$1") ]; then
# Unable to increase beta version number on a RC version, exit.
return 1
fi
if [ $(isBetaVersion "$1") ]; then
echo "$1" | awk -F 'beta' '{printf("%sbeta%d\n", $1, $2+1)}'
else
echo "$1" | awk -F '.' '/^([0-9]+\.){1,3}([0-9]+)$/ {
for(i=1;i<=NF;i++) {
if (i==NF) {
printf("%d-beta1\n", $i+1)
} else {
printf("%d.", $i)
}
}
}'
fi
}
function increaseRCVersion () {
if [ $(isBetaVersion "$1") ]; then
# Unable to increase rc version number on a beta version, exit.
return 1
fi
if [ $(isRCVersion "$1") ]; then
echo "$1" | awk -F 'rc' '{printf("%src%d\n", $1, $2+1)}'
else
echo "$1" | awk -F '.' '/^([0-9]+\.){1,3}([0-9]+)$/ {
for(i=1;i<=NF;i++) {
if (i==NF) {
printf("%d-rc1\n", $i+1)
} else {
printf("%d.", $i)
}
}
}'
fi
}