-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchangeversion
executable file
·64 lines (58 loc) · 2.46 KB
/
changeversion
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
#!/bin/bash
# Change the version of the source code to the supplied value
SHORTNAME=jv
CAPNAME=JV
# Check that a version information was correctly supplied
if [ "$#" -eq "0" ]
then
echo "Checking current version numbers only..."
TEST="true"
elif [ "$1" = "bump" ]
then
echo "Bumping version number..."
MAJOR=`grep 'set(VERSION_MAJOR' CMakeLists.txt | sed -e 's/set(VERSION_MAJOR \"\([0-9a-z\.]\+\)\")/\1/g'`
MINOR=`grep 'set(VERSION_MINOR' CMakeLists.txt | sed -e 's/set(VERSION_MINOR \"\([0-9a-z\.]\+\)\")/\1/g'`
PATCH=`grep 'set(VERSION_PATCH' CMakeLists.txt | sed -e 's/set(VERSION_PATCH \"\([0-9a-z\.]\+\)\")/\1/g'`
echo "Current version is $MAJOR.$MINOR.$PATCH"
PATCH=$(($PATCH+1))
echo "New version will be $MAJOR.$MINOR.$PATCH"
TEST="false"
elif [ "$#" -ne "3" ]
then
echo "Improper version number supplied (use 'changeversion MAJOR MINOR PATCH', 'bump' to increase patch number, or no args to check existing files)"
exit 1
else
MAJOR=$1
MINOR=$2
PATCH=$3
TEST="false"
echo "Changing version numbers in files (to ${MAJOR}.${MINOR}.${PATCH}..."
fi
# Program (version.h)
if [ "$TEST" = "false" ]
then
sed -i -e "s/#define ${CAPNAME}VERSION \"[0-9\.]\+\(.*\)\"/#define ${CAPNAME}VERSION \"$MAJOR.$MINOR.$PATCH\"\1/g" src/version.h
fi
echo -n " version.h (Program Version) : "
grep "#define ${CAPNAME}VERSION" src/version.h | sed -e "s/#define ${CAPNAME}VERSION \"\([0-9a-z\.]\+\).*\"/\1/g"
# CMakeLists.txt
if [ "$TEST" = "false" ]
then
sed -i -e "s/set(VERSION_MAJOR \"\([0-9\.]\+\)\")/set(VERSION_MAJOR \"$MAJOR\")/g" -e "s/set(VERSION_MINOR \"\([0-9a-z\.]\+\)\")/set(VERSION_MINOR \"$MINOR\")/g" -e "s/set(VERSION_PATCH \"\([0-9a-z\.]\+\)\")/set(VERSION_PATCH \"$PATCH\")/g" CMakeLists.txt
fi
echo -n " CMakeLists.txt (Major Version) : "
grep 'set(VERSION_MAJOR' CMakeLists.txt | sed -e 's/set(VERSION_MAJOR \"\([0-9a-z\.]\+\)\")/\1/g'
echo -n " (Minor Version) : "
grep 'set(VERSION_MINOR' CMakeLists.txt | sed -e 's/set(VERSION_MINOR \"\([0-9a-z\.]\+\)\")/\1/g'
echo -n " (Patch Version) : "
grep 'set(VERSION_PATCH' CMakeLists.txt | sed -e 's/set(VERSION_PATCH \"\([0-9a-z\.]\+\)\")/\1/g'
echo ""
# Windows build files
if [ "$TEST" = "false" ]
then
sed -i -e "s/#define MyAppVersion \"[0-9\.]*\"/#define MyAppVersion \"$MAJOR.$MINOR.$PATCH\"/g" ci/windows/*.iss
fi
for a in ci/windows/*iss; do
printf "%24s (Version) : " $a
grep 'define MyAppVersion' $a | sed -e 's/#define MyAppVersion \"\([0-9\.]*\)\"/\1/g'
done