-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproject_version
executable file
·39 lines (39 loc) · 1.01 KB
/
project_version
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
#!/bin/sh
version_get() {
sed -rn '/^__version__/{s/.*\(([0-9]+), ([0-9]+), ([0-9]+)\)/\1.\2.\3/;p}' capp
}
version_set() {
next_ver="$1"
if echo "$next_ver" | grep -E -q '^major|minor|patch$'; then
current_ver=$(version_get)
major=$(echo "$current_ver"|cut -d. -f1)
minor=$(echo "$current_ver"|cut -d. -f2)
patch=$(echo "$current_ver"|cut -d. -f3)
if [ "$ver" = "major" ]; then
major=$((major + 1))
minor=0
patch=0
elif [ "$ver" = "minor" ]; then
minor=$((minor + 1))
patch=0
else
patch=$((patch + 1))
fi
next_ver=$major.$minor.$patch
fi
sed -ri "/^__version__/{s/.*/__version__ = (${next_ver})/;s/\\./, /g}" capp
}
if [ "$1" = "get" ]; then
version_get
elif [ "$1" = "set" ]; then
ver="$2"
if [ -z "$ver" ]; then
echo "You should specify the version to set" >&2
exit 1
fi
version_set "$ver"
else
echo "Usage: $0 [get] | [set] version" >&2
echo " version could be major, minor, patch or fixed semver version" >&2
exit 1
fi