-
Notifications
You must be signed in to change notification settings - Fork 4
/
version.sh
executable file
·110 lines (94 loc) · 2.59 KB
/
version.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
#!/usr/bin/env bash
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# Copyright 2024 MonetDB Foundation;
# Copyright August 2008 - 2023 MonetDB B.V.;
# Copyright 1997 - July 2008 CWI.
if [[ -z $1 ]] ; then
echo "Usage: $0 [-w] jdbc <(major|minor|suffix)=newversion> [...]"
echo "where -w activates actual write of changes"
exit -1
fi
PROPERTIES='build.properties'
get_value() {
local tmp=$(grep -E "^$*=" ${PROPERTIES})
echo ${tmp#*=}
}
escape_value() {
echo "$*" | sed -e 's/\*/\\*/g' -e 's/\./\\./g'
}
patch="cat"
# get rid of the script name
case $1 in
-w)
patch="patch -p0";
shift
;;
esac
case $1 in
jdbc)
TYPE=JDBC
FILES="monetdb-jdbc-XXX.jar"
;;
*)
echo "invalid type: $1"
exit -1
;;
esac
shift
CUR_MAJOR=$(eval "get_value '${TYPE}_MAJOR'")
CUR_MINOR=$(eval "get_value '${TYPE}_MINOR'")
CUR_SUFFIX=$(eval "get_value '${TYPE}_VER_SUFFIX'")
NEW_MAJOR=${CUR_MAJOR}
NEW_MINOR=${CUR_MINOR}
NEW_SUFFIX=${CUR_SUFFIX}
ESC_MAJOR=$(escape_value ${CUR_MAJOR})
ESC_MINOR=$(escape_value ${CUR_MINOR})
ESC_SUFFIX=$(escape_value ${CUR_SUFFIX})
for param in $* ; do
arg=${param%%=*}
val=${param#*=}
num=$(echo ${val} | grep -E '[0-9]+' -o | head -n1)
case ${arg} in
major)
if [[ -z ${num} ]] ; then
echo "major needs a numeric argument!";
exit -1
fi
NEW_MAJOR=${num}
;;
minor)
if [[ -z ${num} ]] ; then
echo "minor needs a numeric argument!";
exit -1
fi
NEW_MINOR=${num}
;;
suffix)
NEW_SUFFIX=${val}
;;
esac
done
echo "Current version: ${CUR_MAJOR}.${CUR_MINOR} (${CUR_SUFFIX})"
echo "New version: ${NEW_MAJOR}.${NEW_MINOR} (${NEW_SUFFIX})"
diff="diff -Naur"
file="release.txt"
sed \
-e "s|version ${ESC_MAJOR}\.${ESC_MINOR} (${ESC_SUFFIX}|version ${NEW_MAJOR}.${NEW_MINOR} \(${NEW_SUFFIX}|g" \
-e "s|${TYPE}-${ESC_MAJOR}\.${ESC_MINOR}|${TYPE}-${NEW_MAJOR}.${NEW_MINOR}|g" \
-e "s|Release date: 20[0-9][0-9]-[01][0-9]-[0-3][0-9]|Release date: `date +%F`|" \
${file} | ${diff} ${file} - | ${patch}
file="build.properties"
sed \
-e "s|${TYPE}_MAJOR=${ESC_MAJOR}|${TYPE}_MAJOR=${NEW_MAJOR}|g" \
-e "s|${TYPE}_MINOR=${ESC_MINOR}|${TYPE}_MINOR=${NEW_MINOR}|g" \
-e "s|${TYPE}_VER_SUFFIX=${ESC_SUFFIX}|${TYPE}_VER_SUFFIX=${NEW_SUFFIX}|g" \
${file} | ${diff} ${file} - | ${patch}
file="pom.xml"
sed \
-e "/monetdb-jdbc/,/MonetDB JDBC driver/s|<version>${ESC_MAJOR}\.${ESC_MINOR}</version>|<version>${NEW_MAJOR}.${NEW_MINOR}</version>|g" \
${file} | ${diff} ${file} - | ${patch}