From 01b6a524468b2805641084fa185aeb207b8c4e1b Mon Sep 17 00:00:00 2001 From: Maurizio Cacace Date: Tue, 14 Mar 2023 17:22:20 +0100 Subject: [PATCH] add scripts bump and update (#8365) --- scripts/github/build/bumpversion.sh | 12 ++ scripts/update-version.sh | 242 ++++++++++++++++++++++++++++ 2 files changed, 254 insertions(+) create mode 100644 scripts/github/build/bumpversion.sh create mode 100644 scripts/update-version.sh diff --git a/scripts/github/build/bumpversion.sh b/scripts/github/build/bumpversion.sh new file mode 100644 index 0000000000..2e0f699aae --- /dev/null +++ b/scripts/github/build/bumpversion.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +cd $DIR/../../../ +BRANCH=${GITHUB_REF##*/} +if [[ $BRANCH =~ ^develop(-patch.*)?$ ]] +then + echo "Replace NPM version with new Alpha tag" + NEXT_VERSION=-nextalpha + ./scripts/update-version.sh -gnu $NEXT_VERSION || exit 1; +fi diff --git a/scripts/update-version.sh b/scripts/update-version.sh new file mode 100644 index 0000000000..997b252cbc --- /dev/null +++ b/scripts/update-version.sh @@ -0,0 +1,242 @@ +#!/usr/bin/env bash + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +VERSION_IN_PACKAGE_JSON=`node -p "require('$DIR/../package.json')".version;`; + +eval JS_API=true +eval GNU=false +eval DIFFERENT_JS_API=false +eval AUTO=false +eval TOTAL_BUILD=true; +eval SEMANTIC="minor"; + +eval projects=( "cli" + "core" + "content-services" + "process-services" + "process-services-cloud" + "insights" + "testing" + "extensions" ) + +cd `dirname $0` + +prefix="@alfresco\/adf-" + +projectslength=${#projects[@]} + +show_help() { + echo "Usage: update-version.sh" + echo "" + echo "-vj or -versionjsapi to use a different version of js-api" + echo "-v or -version version to update" + echo "-major increase the major number and reset minor and patch" + echo "-minor increase the minor number and reset the patch number" + echo "-patch increase the patch number" + echo "-nextalpha update next alpha version of js-api and lib automatically" + echo "-nextbeta update next beta version of js-api and lib automatically" + echo "-alpha update last alpha version of js-api and lib automatically" + echo "-beta update beta alpha version of js-api and lib automatically" + echo "-gnu for gnu" +} + +last_alpha_mode() { + length=`expr $projectslength - 1` + echo "====== Auto find last ALPHA version of ${projects[${length}]} =====" + VERSION=$(npm view @alfresco/adf-${projects[${length}]}@alpha version) + + echo "====== version lib ${VERSION} =====" +} + +next_alpha_mode() { + # If we are creating a new alpha for a prerelease, we need to simply call it with -alpha + if [[ $VERSION_IN_PACKAGE_JSON =~ [0-9]*\.[0-9]*\.[0-9]*-.* ]]; then + SEMANTIC_PARAM=""; + else + SEMANTIC_PARAM="-${SEMANTIC}"; + fi + + echo "====== Auto find next ALPHA version ===== ${SEMANTIC_PARAM} " + VERSION=$(./next_version.sh ${SEMANTIC_PARAM} -alpha) + + echo "====== version lib ${VERSION} =====" + JS_API=false +} + +next_beta_mode() { + echo "====== Auto find next BETA version ===== ${SEMANTIC}" + VERSION=$(./next_version.sh -${SEMANTIC} -beta) + + echo "====== version lib ${VERSION} =====" + JS_API=false +} + +last_beta_mode() { + echo "====== Auto find last BETA version =====" + VERSION=$(npm view @alfresco/adf-core@beta version) + + echo "====== version lib ${VERSION} =====" + + DIFFERENT_JS_API=true + VERSION_JS_API=$(npm view @alfresco/js-api@alpha version) + + echo "====== version js-api ${DIFFERENT_JS_API} =====" +} + +gnu_mode() { + echo "====== GNU MODE =====" + GNU=true +} + +semantic_set() { + echo "====== semantic MODE $1 =====" + SEMANTIC=$1 +} + +version_change() { + echo "====== New version $1 =====" + VERSION=$1 +} + +version_js_change() { + echo "====== Alfresco JS-API version $1 =====" + VERSION_JS_API=$1 + DIFFERENT_JS_API=true +} + +update_component_version() { + echo "====== UPDATE PACKAGE VERSION of ${PACKAGE} to ${VERSION} version in all the package.json ======" + DESTDIR="$DIR/../lib/${1}" + cd $DESTDIR + npm version --allow-same-version --no-git-tag-version --force ${VERSION} + cd - +} + +update_component_dependency_version(){ + DESTDIR="$DIR/../lib/${1}" + + for (( j=0; j<${projectslength}; j++ )); + do + echo "====== UPDATE DEPENDENCY VERSION of .* to ~${VERSION} in ${1}======" + + sed "${sedi[@]}" "s/\"${prefix}${projects[$j]}\": \".*\"/\"${prefix}${projects[$j]}\": \"${VERSION}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${prefix}${projects[$j]}\": \"~.*\"/\"${prefix}${projects[$j]}\": \"~${VERSION}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${prefix}${projects[$j]}\": \"^.*\"/\"${prefix}${projects[$j]}\": \"^${VERSION}\"/g" ${DESTDIR}/package.json + + done +} + +update_total_build_dependency_version(){ + DESTDIR="$DIR/../" + + for (( j=0; j<${projectslength}; j++ )); + do + echo "====== UPDATE TOTAL BUILD DEPENDENCY VERSION of .* to ~${VERSION} in ${1}======" + sed "${sedi[@]}" "s/\"${prefix}${projects[$j]}\": \".*\"/\"${prefix}${projects[$j]}\": \"${VERSION}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${prefix}${projects[$j]}\": \"~.*\"/\"${prefix}${projects[$j]}\": \"~${VERSION}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${prefix}${projects[$j]}\": \"^.*\"/\"${prefix}${projects[$j]}\": \"^${VERSION}\"/g" ${DESTDIR}/package.json + done +} + +update_total_build_dependency_js_version(){ + echo "====== UPDATE DEPENDENCY VERSION @alfresco/js-api total build to ~${1} in ${DESTDIR}======" + DESTDIR="$DIR/../" + PACKAGETOCHANGE="@alfresco\/js-api" + + sed "${sedi[@]}" "s/\"${PACKAGETOCHANGE}\": \".*\"/\"${PACKAGETOCHANGE}\": \"${1}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${PACKAGETOCHANGE}\": \"~.*\"/\"${PACKAGETOCHANGE}\": \"${1}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${PACKAGETOCHANGE}\": \"^.*\"/\"${PACKAGETOCHANGE}\": \"${1}\"/g" ${DESTDIR}/package.json +} + +update_component_js_version(){ + echo "====== UPDATE DEPENDENCY VERSION of @alfresco/js-api in ${1} to ${2} ======" + DESTDIR="$DIR/../lib/${1}" + + PACKAGETOCHANGE="@alfresco\/js-api" + + sed "${sedi[@]}" "s/\"${PACKAGETOCHANGE}\": \".*\"/\"${PACKAGETOCHANGE}\": \"${2}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${PACKAGETOCHANGE}\": \"~.*\"/\"${PACKAGETOCHANGE}\": \"${2}\"/g" ${DESTDIR}/package.json + sed "${sedi[@]}" "s/\"${PACKAGETOCHANGE}\": \"^.*\"/\"${PACKAGETOCHANGE}\": \"${2}\"/g" ${DESTDIR}/package.json + +} + +args=("$@") + +while [[ $1 == -* ]]; do + case "$1" in + -major) semantic_set "major"; shift;; + -minor) semantic_set "minor"; shift;; + -patch) semantic_set "patch"; shift;; + -*) shift;; + esac +done + +set -- "${args[@]}" + +while [[ $1 == -* ]]; do + case "$1" in + -h|--help|-\?) show_help; exit 0;; + -v|version) version_change $2; shift 2;; + -sj|sjsapi) skip_js; shift;; + -vj|versionjsapi) version_js_change $2; shift 2;; + -gnu) gnu_mode; shift;; + -alpha) last_alpha_mode; shift;; + -nextalpha) next_alpha_mode; shift;; + -beta) last_beta_mode; shift;; + -nextbeta) next_beta_mode; shift;; + -*) shift;; + esac +done + +if $GNU; then + sedi='-i' +else + sedi=('-i' '') +fi + +if [[ "${VERSION}" == "" ]] +then + echo "Version number required" + exit 1 +fi + +cd "$DIR/../" + +echo "====== UPDATE COMPONENTS ======" + +# use for loop to read all values and indexes +for (( i=0; i<${projectslength}; i++ )); +do + echo "====== UPDATE COMPONENT ${projects[$i]} ======" + update_component_version ${projects[$i]} + update_component_dependency_version ${projects[$i]} + + if $JS_API == true; then + + if $DIFFERENT_JS_API == true; then + update_component_js_version ${projects[$i]} ${VERSION_JS_API} + else + update_component_js_version ${projects[$i]} ${VERSION} + fi + + fi +done + +update_total_build_dependency_version + +if $JS_API == true; then + if $DIFFERENT_JS_API == true; then + update_total_build_dependency_js_version ${VERSION_JS_API} + else + update_total_build_dependency_js_version ${VERSION} + fi +fi + +echo "====== UPDATE DEMO SHELL ======" + +DESTDIR="$DIR/../demo-shell/" +npm version --allow-same-version --no-git-tag-version --force ${VERSION} + +cd $DESTDIR +npm version --allow-same-version --no-git-tag-version --force ${VERSION} +cd -