Mercurial > hg > monetdb-java
diff version.sh @ 0:a5a898f6886c
Copy of MonetDB java directory changeset e6e32756ad31.
author | Sjoerd Mullender <sjoerd@acm.org> |
---|---|
date | Wed, 21 Sep 2016 09:34:48 +0200 (2016-09-21) |
parents | |
children | 3abb3634f467 6f74e01c57da |
line wrap: on
line diff
new file mode 100755 --- /dev/null +++ b/version.sh @@ -0,0 +1,126 @@ +#!/usr/bin/env bash + +# 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 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + +if [[ -z $1 ]] ; then + echo "Usage: $0 [-w] <(jdbc|mcl)> <(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" + ;; + mcl) + TYPE=MCL + FILES="monetdb-mcl-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} + +for file in \ + Makefile.ag \ + ; do + if [[ -f ${file} ]] ; then + for f in $FILES ; do + fr=${f//XXX/${NEW_MAJOR}.${NEW_MINOR}} + fo=${f//XXX/${ESC_MAJOR}.${ESC_MINOR}} + fo=${fo//./\\.} + sed -e "s|${fo}|${fr}|g" \ + ${file} | ${diff} ${file} - | ${patch} + done + else + echo "Please do not forget to patch file '${file##*../}', too." + fi +done + +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 "s|<version>${ESC_MAJOR}\.${ESC_MINOR}</version>|<version>${NEW_MAJOR}.${NEW_MINOR}</version>|g" \ + ${file} | ${diff} ${file} - | ${patch}