#!/bin/bash VERSION_STRING="" #GIT='/cygdrive/c/Program Files \(x86\)/Git/bin/git' GIT=git parse_git_branch () { $GIT branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1/" } ARCH=$1 TARGET=$2 INTERFACE=$3 INTERFACE_DEFINITION=$4 VERSION_H=$5 SCRIPT=$(readlink -f $0) SCRIPTPATH=`dirname $SCRIPT` OUTPUTDIR=$(pwd) echo " current dir is : " $(pwd) echo $SCRIPT echo $SCRIPTPATH echo "changing dir to script path: " $SCRIPTPATH cd $SCRIPTPATH # set version string ################################################################## if [ -z $VERSION_STRING ] ; then VERSION_STRING=$(date +%Y%m%d_%H%M) fi GIT_DESCRIBE=$($GIT describe) GIT_BRANCH=$(parse_git_branch) # extract path from branchname: IFS='_' read -ra TMP_ARRAY <<< "${GIT_BRANCH}" BRANCH_PATH=${TMP_ARRAY[0]} # detect if we have a development version: if [ ${#TMP_ARRAY[1]} -gt 0 ] ; then DEV_SUFFIX="_dev" else DEV_SUFFIX="" fi # detect if git status is dirty GIT_DESCRIBE_DIRTY=$($GIT describe --dirty) if [ "${GIT_DESCRIBE_DIRTY:(-6)}" == "-dirty" ] ; then DIRTY_SUFFIX="_dirty" else DIRTY_SUFFIX="" fi if [ -n "$DIRTY_SUFFIX" ] || [ -n "$DEV_SUFFIX" ] ; then DEVDIRTY=true else DEVDIRTY=false fi # extract interface definition # #Q_DECLARE_INTERFACE(CCInterface, # "eu.atb.ptu.plugin.CCInterface/2.9.0") # -> extract whole string within quotation marks INTERFACE_VERSION=$(grep 'eu.atb.ptu.plugin.' ${INTERFACE_DEFINITION}) # get string within quotes: INTERFACE_VERSION=`echo ${INTERFACE_VERSION} | awk -F \" '{print $2}'` # # write version.h echo " TARGET is: $TARGET" echo " ARCH is: $ARCH" echo " " echo " PluginName: $TARGET" echo " Interface: $INTERFACE" echo " InterfaceVersion: $INTERFACE_VERSION" echo " " echo " new version is: $VERSION_STRING" echo " git describe is: $GIT_DESCRIBE" echo " git branch is: $GIT_BRANCH" echo " branch-path is: $BRANCH_PATH" echo " " echo " dev suffix: $DEV_SUFFIX" echo " dirty suffix: $DIRTY_SUFFIX" PLUGIN_VERSION=${VERSION_STRING} #ATB_QT_GIT_DESCRIBE=${GIT_DESCRIBE}_${GIT_BRANCH} PLUGIN_GIT_DESCRIBE=${GIT_DESCRIBE}_${BRANCH_PATH}${DEV_SUFFIX}${DIRTY_SUFFIX} #TARGET=IngenicoZVT_CCPlugin # build version.h ##################################################################### echo " building new version info (version.h) ..." echo "#ifndef VERSION_H" > ${VERSION_H} echo "#define VERSION_H" >> ${VERSION_H} echo "" >> ${VERSION_H} echo "" >> ${VERSION_H} echo "#define INTERFACE_VERSION \"${INTERFACE_VERSION}\"" >> ${VERSION_H} echo "#define PLUGIN_VERSION \"${PLUGIN_VERSION}\"" >> ${VERSION_H} echo "" >> ${VERSION_H} echo "#define PLUGIN_GIT_DESCRIBE \"${PLUGIN_GIT_DESCRIBE}\"" >> ${VERSION_H} echo "" >> ${VERSION_H} echo "" >> ${VERSION_H} cat <<EOT >> ${VERSION_H} const std::string pluginInfoString = R"( { "Interface": "${INTERFACE}", "InterfaceVersion": "${INTERFACE_VERSION}", "PluginName": "${TARGET}", "Version": "${PLUGIN_VERSION}", "git-describe": "${PLUGIN_GIT_DESCRIBE}", } )"; EOT echo "" >> ${VERSION_H} echo "" >> ${VERSION_H} if [ ${DEVDIRTY} == "true" ] ; then echo "#define DEVDIRTY" >> ${VERSION_H} echo "" >> ${VERSION_H} echo "" >> ${VERSION_H} fi echo "#define SYSTEM_ARCH \"${ARCH}\"" >> ${VERSION_H} echo "#define ARCH_${ARCH}" >> ${VERSION_H} echo "" >> ${VERSION_H} echo "" >> ${VERSION_H} echo "#endif //VERSION_H" >> ${VERSION_H}