From e97333aabd93d39b50fd754319cda06becaba0b9 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Wed, 22 Nov 2023 11:33:05 +0000 Subject: [PATCH] [PRODENG-211] reworked version updating (#9104) * update js-api package metadata * cleanup * improve script loop * cleanup dead code * Revert "cleanup dead code" This reverts commit f0de08acf89cfe1dfd568b77438eff60e48ec486. * cleanup dead code * cleanup * cleanup dead code * reduce scripts * cleanup script * better naming * cleanup * minor fixes * code improvements and fixes * minor improvements * fix js-api upgrades * reusable version generator * fix variable overwrite * reduce code duplication * fix version generation for build number * cleanup --- .github/workflows/release-branch.yml | 2 +- lib/js-api/src/package.json | 4 +- scripts/github/build/bumpversion.sh | 3 +- scripts/next_version.sh | 119 --------------- scripts/release.sh | 2 - scripts/update-version.sh | 220 +++++++++++---------------- 6 files changed, 89 insertions(+), 261 deletions(-) delete mode 100755 scripts/next_version.sh diff --git a/.github/workflows/release-branch.yml b/.github/workflows/release-branch.yml index 8e31b3cc6e..4764643511 100644 --- a/.github/workflows/release-branch.yml +++ b/.github/workflows/release-branch.yml @@ -125,7 +125,7 @@ jobs: - name: build libraries run: | set -u; - ./scripts/update-version.sh -gnu -nextalpha|| exit 1; + ./scripts/update-version.sh -gnu || exit 1; npx nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell" --skip-nx-cache npx nx affected $NX_CALCULATION_FLAGS --target=pretheme - uses: actions/setup-node@v3 diff --git a/lib/js-api/src/package.json b/lib/js-api/src/package.json index 8897e18f0e..e190277c80 100644 --- a/lib/js-api/src/package.json +++ b/lib/js-api/src/package.json @@ -7,10 +7,10 @@ "keywords": ["alfresco"], "repository": { "type": "git", - "url": "https://github.com/Alfresco/alfresco-js-api.git" + "url": "https://github.com/Alfresco/alfresco-ng2-components.git" }, "bugs": { - "url": "https://github.com/Alfresco/alfresco-js-api/issues" + "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, "dependencies": { "event-emitter": "^0.3.5", diff --git a/scripts/github/build/bumpversion.sh b/scripts/github/build/bumpversion.sh index 2e0f699aae..962c0a7a39 100755 --- a/scripts/github/build/bumpversion.sh +++ b/scripts/github/build/bumpversion.sh @@ -7,6 +7,5 @@ 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; + ./scripts/update-version.sh -gnu || exit 1; fi diff --git a/scripts/next_version.sh b/scripts/next_version.sh deleted file mode 100755 index 476e8ae44d..0000000000 --- a/scripts/next_version.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bash -set -f - -# By default NEXT_VERSION is set to the current version, so we can change only the aplha suffix as well -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -NEXT_VERSION=`node -p "require('$DIR/../package.json')".version;`; - -eval EXEC_PATCH=false -eval EXEC_MAJOR=false -eval EXEC_MINOR=false -eval EXEC_BETA=false -eval EXEC_ALPHA=false - -show_help() { - echo "Usage: next_version.sh" - echo "" - 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 "-beta create beta name" - echo "-alpha create beta name" -} - -major() { - EXEC_MAJOR=true -} - -minor() { - EXEC_MINOR=true -} - -patch() { - EXEC_PATCH=true -} - -alpha() { - EXEC_ALPHA=true -} - -beta() { - EXEC_BETA=true -} - -while [[ $1 == -* ]]; do - case "$1" in - -h|--help|-\?) show_help; exit 0;; - -major) major; shift;; - -minor) minor; shift;; - -patch) patch; shift;; - -alpha) alpha; shift;; - -beta) beta; shift;; - -*) echo "invalid option: $1" 1>&2; show_help; exit 1;; - esac -done - -if [[ "${EXEC_MINOR}" == true ]] -then - ADF_VERSION=$(npm view @alfresco/adf-core version) - NEXT_VERSION=( ${ADF_VERSION//./ } ) - ((NEXT_VERSION[1]++)) - NEXT_VERSION[2]=0 - NEXT_VERSION="${NEXT_VERSION[0]}.${NEXT_VERSION[1]}.${NEXT_VERSION[2]}" -fi - -if [[ "${EXEC_MAJOR}" == true ]] -then - ADF_VERSION=$(npm view @alfresco/adf-core version) - NEXT_VERSION=( ${ADF_VERSION//./ } ) - ((NEXT_VERSION[0]++)) - NEXT_VERSION[1]=0 - NEXT_VERSION[2]=0 - NEXT_VERSION="${NEXT_VERSION[0]}.${NEXT_VERSION[1]}.${NEXT_VERSION[2]}" -fi - -if [[ "${EXEC_PATCH}" == true ]] -then - ADF_VERSION=$(npm view ng2-alfresco-core version) - NEXT_VERSION=( ${ADF_VERSION//./ } ) - ((NEXT_VERSION[2]++)) - NEXT_VERSION="${NEXT_VERSION[0]}.${NEXT_VERSION[1]}.${NEXT_VERSION[2]}" -fi - -if [[ "${EXEC_ALPHA}" == true ]] -then - NEXT_VERSION=${NEXT_VERSION}-${GH_BUILD_NUMBER} -fi - -if [[ "${EXEC_BETA}" == true ]] -then - BETA_VERSION=$(npm view @alfresco/adf-core@beta version) - - if [[ $BETA_VERSION == "" ]]; then - NEXT_BETA_VERSION=0 - else - NEXT_BETA_VERSION=( ${BETA_VERSION//-beta/ } ) - - # to reset the beta version in case of a new release - if [[ $NEXT_VERSION != ${NEXT_BETA_VERSION[0]} ]]; then - NEXT_BETA_VERSION[1]=0 - fi - - if [[ ${NEXT_BETA_VERSION[1]} == "" ]]; then - NEXT_BETA_VERSION[1]=0 - fi - fi - - while - ((NEXT_BETA_VERSION[1]++)) - - NPM_VIEW="npm view @alfresco/adf-core@${NEXT_VERSION}-beta${NEXT_BETA_VERSION[1]} version" - - NEXT_POSSIBLE_VERSION=$(${NPM_VIEW}) - [ "$NEXT_POSSIBLE_VERSION" != "" ] - do :; done - - NEXT_VERSION=${NEXT_VERSION}-beta${NEXT_BETA_VERSION[1]} -fi - -echo $NEXT_VERSION diff --git a/scripts/release.sh b/scripts/release.sh index c0e7850183..fcd7fdc85f 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -36,8 +36,6 @@ LICENSE_GREP=`escape_for_grep "$LICENSE_ROW"` LICENSE_README="$ROOTDIR/docs/license-info/README.md"; LICENSE_GREP_RESULT=`grep "$LICENSE_GREP" "$LICENSE_README"`; -#./scripts/update-version.sh -v $VERSION - if [ -z "$LICENSE_GREP_RESULT" ]; then echo -e "\e[33mAdding third party license info for version: $VERSION\e[0m" diff --git a/scripts/update-version.sh b/scripts/update-version.sh index cb3accf42f..46988b7bfe 100755 --- a/scripts/update-version.sh +++ b/scripts/update-version.sh @@ -1,14 +1,10 @@ #!/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 JS_API=false eval GNU=false eval DIFFERENT_JS_API=false -eval AUTO=false -eval TOTAL_BUILD=true; -eval SEMANTIC="minor"; eval projects=( "cli" "core" @@ -23,78 +19,44 @@ eval projects=( "cli" 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) +get_next_version() { + PKG_VERSION=`node -p "require('$1/package.json')".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=""; + if [[ $PKG_VERSION =~ [0-9]*\.[0-9]*\.[0-9]*-.* ]]; then + PKG_VERSION=$PKG_VERSION else - SEMANTIC_PARAM="-${SEMANTIC}"; + PKG_VERSION=( ${PKG_VERSION//./ } ) + ((PKG_VERSION[1]++)) + PKG_VERSION[2]=0 + PKG_VERSION="${PKG_VERSION[0]}.${PKG_VERSION[1]}.${PKG_VERSION[2]}" fi - echo "====== Auto find next ALPHA version ===== ${SEMANTIC_PARAM} " - VERSION=$(./next_version.sh ${SEMANTIC_PARAM} -alpha) + if [[ $GH_BUILD_NUMBER != "" ]]; then + PKG_VERSION=$PKG_VERSION-$GH_BUILD_NUMBER + fi - echo "====== version lib ${VERSION} =====" - JS_API=false + echo $PKG_VERSION } -next_beta_mode() { - echo "====== Auto find next BETA version ===== ${SEMANTIC}" - VERSION=$(./next_version.sh -${SEMANTIC} -beta) +VERSION=`get_next_version $DIR/..` +JS_API_VERSION=`get_next_version $DIR/../lib/js-api/src` - 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} =====" -} +echo "====== New libs version: $VERSION =====" +echo "====== New js-api version: $VERSION =====" gnu_mode() { echo "====== GNU MODE =====" GNU=true } -semantic_set() { - echo "====== semantic MODE $1 =====" - SEMANTIC=$1 -} - version_change() { echo "====== New version $1 =====" VERSION=$1 @@ -106,139 +68,127 @@ version_js_change() { 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_library_version() { + echo "====== $1@$VERSION ======" + + DESTDIR="$DIR/../lib/$1" + if [[ $1 == "js-api" ]]; then + DESTDIR="$DESTDIR/src" + fi + + cd $DESTDIR + npm version --allow-same-version --no-git-tag-version --force $VERSION } -update_component_dependency_version() { - echo "====== UPDATE DEPENDENCY VERSION of .* to ~${VERSION} in ${1}======" - DESTDIR="$DIR/../lib/${1}" +update_dependency_version() { + sed "${sedi[@]}" "s/\"$1\": \".*\"/\"$1\": \">=$2\"/g" "package.json" + sed "${sedi[@]}" "s/\"$1\": \"~.*\"/\"$1\": \"~$2\"/g" "package.json" + sed "${sedi[@]}" "s/\"$1\": \"^.*\"/\"$1\": \"^$2\"/g" "package.json" +} - for (( j=0; j<${projectslength}; j++ )); +update_dependencies() { + for PROJECT in ${projects[@]} do - PROJECT=${prefix}${projects[$j]} - sed "${sedi[@]}" "s/\"${PROJECT}\": \".*\"/\"${PROJECT}\": \">=${VERSION}\"/g" ${DESTDIR}/package.json - sed "${sedi[@]}" "s/\"${PROJECT}\": \"~.*\"/\"${PROJECT}\": \"~${VERSION}\"/g" ${DESTDIR}/package.json - sed "${sedi[@]}" "s/\"${PROJECT}\": \"^.*\"/\"${PROJECT}\": \"^${VERSION}\"/g" ${DESTDIR}/package.json + if [[ $PROJECT == "js-api" ]]; then + PROJECT="@alfresco\/$PROJECT" + echo "├─ $PROJECT@$JS_API_VERSION" + update_dependency_version $PROJECT $JS_API_VERSION + else + PROJECT="@alfresco\/adf-$PROJECT" + echo "├─ $PROJECT@$VERSION" + update_dependency_version $PROJECT $VERSION + fi done } -update_total_build_dependency_version() { - echo "====== UPDATE TOTAL BUILD DEPENDENCY VERSION of .* to ~${VERSION} ======" - DESTDIR="$DIR/../" +update_library_dependencies() { + DESTDIR="$DIR/../lib/$1" - for (( j=0; j<${projectslength}; j++ )); - do - PROJECT=${prefix}${projects[$j]} - sed "${sedi[@]}" "s/\"${PROJECT}\": \".*\"/\"${PROJECT}\": \">=${VERSION}\"/g" ${DESTDIR}/package.json - sed "${sedi[@]}" "s/\"${PROJECT}\": \"~.*\"/\"${PROJECT}\": \"~${VERSION}\"/g" ${DESTDIR}/package.json - sed "${sedi[@]}" "s/\"${PROJECT}\": \"^.*\"/\"${PROJECT}\": \"^${VERSION}\"/g" ${DESTDIR}/package.json - done + if [[ $1 == "js-api" ]]; then + DESTDIR="$DESTDIR/src" + fi + + cd $DESTDIR + update_dependencies } -update_total_build_dependency_js_version(){ - echo "====== UPDATE DEPENDENCY VERSION @alfresco/js-api total build to ~${1} in ${DESTDIR}======" +update_root_dependencies() { + echo "====== Root package.json ======" DESTDIR="$DIR/../" - PACKAGETOCHANGE="@alfresco\/js-api" + cd $DESTDIR + update_dependencies +} - 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_root_js_api_version(){ + echo "====== $DESTDIR/@alfresco/js-api@$1 ======" + DESTDIR="$DIR/../" + cd $DESTDIR + update_dependency_version "@alfresco\/js-api" $1 } 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 - + echo "====== $1/@alfresco/js-api@$2 ======" + DESTDIR="$DIR/../lib/$1" + cd $DESTDIR + update_dependency_version "@alfresco\/js-api" $2 } -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' + sedi='-i' else - sedi=('-i' '') + sedi=('-i' '') fi if [[ "${VERSION}" == "" ]] then - echo "Version number required" - exit 1 + 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++ )); +for PROJECT in ${projects[@]} do - echo "====== UPDATE COMPONENT ${projects[$i]} ======" - update_component_version ${projects[$i]} - update_component_dependency_version ${projects[$i]} + update_library_version $PROJECT + update_library_dependencies $PROJECT - 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} + if $JS_API == true; then + if $DIFFERENT_JS_API == true; then + update_component_js_version $PROJECT $VERSION_JS_API + else + update_component_js_version $PROJECT $VERSION + fi fi - - fi done -update_total_build_dependency_version +update_root_dependencies if $JS_API == true; then if $DIFFERENT_JS_API == true; then - update_total_build_dependency_js_version ${VERSION_JS_API} + update_root_js_api_version $VERSION_JS_API else - update_total_build_dependency_js_version ${VERSION} + update_root_js_api_version $VERSION fi fi +# bump root package.json +npm version --allow-same-version --no-git-tag-version --force $VERSION + 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 - +npm version --allow-same-version --no-git-tag-version --force $VERSION