#!/bin/bash # # Copyright (c) 2020 Bubble, Inc. All rights reserved. For personal (non-commercial) use, see license: https://getbubblenow.com/bubble-license/ # # Sets the Bubble version number in various source files. # # Usage: # # _set_version [ReleaseName x.y.z] # # ReleaseName : a Bubble release, like Adventure # x.y.z : the version number, like 1.5.2 # SCRIPT="${0}" SCRIPT_DIR="$(cd "$(dirname "${SCRIPT}")" && pwd)" . "${SCRIPT_DIR}"/bubble_common V_NAME="${1:?no release specified}" V_NUMBER="${2:?no version specified}" if [[ -n "$(echo "${V_NAME}" | awk -F ' ' '{print $2}')" ]] ; then die "ReleaseName cannot contain spaces" fi if [[ "$(echo "${V_NUMBER}" | tr -cd '[[:digit:]].')" != "${V_NUMBER}" ]] ; then die "Invalid version number: ${V_NUMBER}" fi function process_pom () { V_NUMBER="${1}" POM="${2}" T_FILE=$(mktemp "/tmp/$(basename "${POM}").XXXXXXX") FOUND_VERSION=0 IFS='' cat "${POM}" | while read -r line ; do if [[ ${FOUND_VERSION} -eq 1 ]] ; then echo "${line}" | tr -d '[:digit:].' | sed -e "s/>${V_NUMBER}> "${T_FILE}" FOUND_VERSION=0 continue elif [[ -n "$(echo "${line}" | grep "@@BUBBLE_VERSION@@")" ]] ; then FOUND_VERSION=1 fi echo "${line}" >> "${T_FILE}" done mv "${T_FILE}" "${POM}" || die "Error moving ${T_FILE} -> ${POM}" } # Handle pom.xml files cd "${SCRIPT_DIR}/.." || die "Error changing to Bubble main directory" process_pom "${V_NUMBER}" pom.xml process_pom "${V_NUMBER}" bubble-server/pom.xml process_pom "${V_NUMBER}" utils/pom.xml # Handle META-INF properties file VERSION_PROP_FILE="bubble-server/src/main/resources/META-INF/bubble/bubble.properties" P_TEMP=$(mktemp /tmp/bubble.properties.XXXXXXX) cat "${VERSION_PROP_FILE}" | sed -e "s/bubble.version=.*/bubble.version=${V_NAME} ${V_NUMBER}/" > "${P_TEMP}" mv "${P_TEMP}" ${VERSION_PROP_FILE} || die "Error moving ${P_TEMP} -> ${VERSION_PROP_FILE}" # Handle package.json for web ui PKG_JSON="bubble-web/package.json" PKG_TEMP=$(mktemp /tmp/package.json.XXXXXXX) cat "${PKG_JSON}" | sed -e "s/\"version\".*/\"version\": \"${V_NUMBER}\",/" > "${PKG_TEMP}" mv "${PKG_TEMP}" ${PKG_JSON} || die "Error moving ${PKG_TEMP} -> ${PKG_JSON}"