123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #!/bin/bash
- #
- # Common utilities used by tools for automating tagging and release
- #
- #We want any failures to be fatal
- set -e
- SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
- REMOTE=origin
- FORCE=
- DRYRUN=
- IGNORE=
- RETAG=
- VERBOSE=
- VERSIONFILE=version.cmake
- POSITIONAL=()
- while [[ $# -gt 0 ]]
- do
- key="$1"
- case $key in
- -f|--force)
- FORCE=-f
- shift
- ;;
- -i|--ignore)
- IGNORE=$1
- shift
- ;;
- -v|--verbose)
- VERBOSE=$1
- shift
- ;;
- --retag)
- RETAG=$1
- shift
- ;;
- -d|--dryrun)
- DRYRUN=$1
- shift
- ;;
- -r|--remote)
- if [ $# -eq 1 ] ; then
- echo "$1 option requires an argument"
- exit 2
- fi
- REMOTE="$2"
- shift
- shift
- ;;
- *) # unknown option
- POSITIONAL+=("$1") # save it in an array for later
- shift # past argument
- ;;
- esac
- done
- set -- "${POSITIONAL[@]}" # restore positional parameters
- if [ "$#" -ge 1 ] ; then
- VERSIONFILE=$1
- shift 1
- fi
- GIT_BRANCH=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD)
- # brute-force way to read cmake values by "parsing" the line that sets them
- # note that this makes some assumptions about how the version.cmake is laid out!
- function extract()
- {
- local _file=$1
- local _name=$2
- local _search=$2
- local _result=`grep -i "set *( *$_search " $_file | sed -E "s/^.*$_search *\"?//" | sed -E "s/\"? *\)//"`
- eval "$_name='$_result'"
- }
- function parse_cmake()
- {
- if [ ! -f $VERSIONFILE ]; then
- echo "File $VERSIONFILE not found"
- exit 2
- fi
- extract $VERSIONFILE HPCC_NAME
- extract $VERSIONFILE HPCC_PROJECT
- extract $VERSIONFILE HPCC_MAJOR
- extract $VERSIONFILE HPCC_MINOR
- extract $VERSIONFILE HPCC_POINT
- extract $VERSIONFILE HPCC_MATURITY
- extract $VERSIONFILE HPCC_SEQUENCE
- if [ -z "$HPCC_NAME" ] ; then
- if [ "$HPCC_PROJECT" == "community" ] ; then
- HPCC_NAME="Community Edition"
- else
- HPCC_NAME="Enterprise Edition"
- fi
- fi
- }
- function doit()
- {
- if [ -n "$VERBOSE" ] || [ -n "$DRYRUN" ] ; then echo $1 ; fi
- if [ -z "$DRYRUN" ] ; then eval $1 ; fi
- }
- function doit2()
- {
- if [ -n "$VERBOSE" ] || [ -n "$DRYRUN" ] ; then echo $1 ; fi
- eval $1
- }
- function set_tag()
- {
- local _prefix=$1
- if [ "$HPCC_MATURITY" = "release" ]; then
- HPCC_SHORT_TAG=$HPCC_MAJOR.$HPCC_MINOR.$HPCC_POINT
- HPCC_LONG_TAG=${_prefix}_$HPCC_SHORT_TAG-$HPCC_SEQUENCE
- else
- HPCC_SHORT_TAG=$HPCC_MAJOR.$HPCC_MINOR.$HPCC_POINT-$HPCC_MATURITY$HPCC_SEQUENCE
- HPCC_LONG_TAG=${_prefix}_$HPCC_SHORT_TAG
- fi
- }
- function update_version_file()
- {
- # Update the version.cmake file
- local _new_maturity=$1
- local _new_point=$2
- local _new_sequence=$3
- local _new_minor=$4
- if [ -z "$_new_minor" ] ; then
- _new_minor=$HPCC_MINOR
- fi
-
- if [ -n "$VERBOSE" ] ; then
- echo sed -E \
- -e "\"s/HPCC_MINOR +$HPCC_MINOR *\)/HPCC_MINOR $_new_minor )/\"" \
- -e "\"s/HPCC_POINT +$HPCC_POINT *\)/HPCC_POINT $_new_point )/\"" \
- -e "\"s/HPCC_SEQUENCE +$HPCC_SEQUENCE *\)/HPCC_SEQUENCE $_new_sequence )/\"" \
- -e "\"s/HPCC_MATURITY +\"$HPCC_MATURITY\" *\)/HPCC_MATURITY \"$_new_maturity\" )/\"" \
- -i.bak $VERSIONFILE
- fi
- if [ -z "$DRYRUN" ] ; then
- sed -E \
- -e "s/HPCC_MINOR +$HPCC_MINOR *\)/HPCC_MINOR $_new_minor )/" \
- -e "s/HPCC_POINT +$HPCC_POINT *\)/HPCC_POINT $_new_point )/" \
- -e "s/HPCC_SEQUENCE +$HPCC_SEQUENCE *\)/HPCC_SEQUENCE $_new_sequence )/" \
- -e "s/HPCC_MATURITY +\"$HPCC_MATURITY\" *\)/HPCC_MATURITY \"$_new_maturity\" )/" \
- -i.bak $VERSIONFILE
- cat $VERSIONFILE
- else
- sed -E \
- -e "s/HPCC_MINOR +$HPCC_MINOR *\)/HPCC_MINOR $_new_minor )/" \
- -e "s/HPCC_POINT +$HPCC_POINT *\)/HPCC_POINT $_new_point )/" \
- -e "s/HPCC_SEQUENCE +$HPCC_SEQUENCE *\)/HPCC_SEQUENCE $_new_sequence )/" \
- -e "s/HPCC_MATURITY +\"$HPCC_MATURITY\" *\)/HPCC_MATURITY \"$_new_maturity\" )/" \
- $VERSIONFILE
- fi
- }
- function do_tag()
- {
- for f in ${HPCC_PROJECT}; do
- set_tag $f
- if [ "$FORCE" = "-f" ] ; then
- doit "git tag -d $HPCC_LONG_TAG"
- fi
- doit "git tag $HPCC_LONG_TAG"
- doit "git push $REMOTE $HPCC_LONG_TAG $FORCE"
- done
- }
- function sync_git()
- {
- doit "git fetch $REMOTE"
- doit "git merge --ff-only $REMOTE/$GIT_BRANCH"
- doit "git submodule update --init --recursive"
- }
|