From f1e85f50d7637390e5a0a8b85805f1cc42ee15f0 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Mon, 9 Jan 2023 11:52:04 +0700 Subject: [PATCH 1/8] feat(web): starts implementation of CI publish-s.keyman action --- web/build.sh | 2 +- web/ci.sh | 55 ++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/web/build.sh b/web/build.sh index c5dcc4df88..558fee2799 100755 --- a/web/build.sh +++ b/web/build.sh @@ -306,7 +306,7 @@ copy_sources ( ) { do echo "- $SOURCE/$SOURCE_FOLDER/ => $CONFIG_OUT_PATH/src/$SOURCE_FOLDER/" mkdir -p "$CONFIG_OUT_PATH/src/$SOURCE_FOLDER" - cp -Rf "$SOURCE/$SOURCE_FOLDER/" "$CONFIG_OUT_PATH/src/$SOURCE_FOLDER" + cp -Rf "$SOURCE/$SOURCE_FOLDER/"* "$CONFIG_OUT_PATH/src/$SOURCE_FOLDER/" done echo diff --git a/web/ci.sh b/web/ci.sh index 539d47f79f..05fb8294d0 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -24,10 +24,13 @@ cd "$THIS_SCRIPT_PATH" builder_describe "Defines and implements the CI build steps for Keyman Engine for Web (KMW)." \ "build" \ - "test Runs all unit tests." \ - "post-test Runs post-test cleanup. Should be run even if a prior step fails." \ - "validate-size Runs the build-size comparison check" \ - "--debug Runs this script in local-development mode; reports and tests will be locally logged" + "test Runs all unit tests." \ + "post-test Runs post-test cleanup. Should be run even if a prior step fails." \ + "validate-size Runs the build-size comparison check" \ + "publish-s.keyman Prepares an s.keyman.com PR (intended for release builds)" \ + "publish-downloads Prepares the upload to downloads.keyman.com (intended for release builds)" \ + "--debug Runs this script in local-development mode; reports and tests will be locally logged" \ + "--password=PASSWORD Used to supply passwords needed by certain actions" builder_parse "$@" @@ -83,4 +86,48 @@ if builder_start_action validate-size; then ./src/tools/building/check-build-size.sh $FLAGS builder_finish_action success validate-size +fi + +if builder_start_action publish-s.keyman; then + TIER=`cat ../TIER.md` + BUILD_NUMBER=`cat ../VERSION.md` + S_KEYMAN_COM=../../s.keyman.com + + # First phase: make sure the s.keyman.com repo is locally-available and up to date. + pushd "$S_KEYMAN_COM" + if builder_has_option --password; then + git pull https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master + else + # For testing on a local development machine / a machine with the repo already loaded. + git checkout master + git pull + fi + popd + + # Second phase: copy the artifacts over + + # The main build products are expected to reside at the root of this folder. + BASE_PUBLISH_FOLDER="$S_KEYMAN_COM/kmw/engine/$BUILD_NUMBER" + mkdir "$BASE_PUBLISH_FOLDER" + + cp -Rf build/app/web/release/* "$BASE_PUBLISH_FOLDER" + cp -Rf build/app/ui/release/* "$BASE_PUBLISH_FOLDER" + + # Third phase: tweak the sourcemaps + # TODO: actual sourcemap tweaking. + + # Final phase: build the PR and push it. + cd "$S_KEYMAN_COM" + # git config user.name "Keyman Build Server" + # git config user.email "keyman-server@users.noreply.github.com" + git add "kmw/engine/$BUILD_NUMBER" + # git commit -m "KeymanWeb release $BUILD_NUMBER (automatic)" + # git push https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master + + builder_finish_action success publish-s.keyman +fi + +if builder_start_action publish-downloads; then +# + builder_finish_action success publish-downloads fi \ No newline at end of file From f39616c824258ebb141eb5c7030885c5eb66cd20 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Mon, 9 Jan 2023 13:58:21 +0700 Subject: [PATCH 2/8] feat(web): finishes implementation of ci.sh publish-s.keyman action --- web/ci.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/web/ci.sh b/web/ci.sh index 05fb8294d0..2eb0da47a5 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -114,15 +114,18 @@ if builder_start_action publish-s.keyman; then cp -Rf build/app/ui/release/* "$BASE_PUBLISH_FOLDER" # Third phase: tweak the sourcemaps - # TODO: actual sourcemap tweaking. + # We can use an alt-mode of Web's sourcemap-root tool for this. + for sourcemap in "$BASE_PUBLISH_FOLDER/"*.map; do + node build/tools/building/sourcemap-root/index.mjs null "$sourcemap" --sourceRoot "https://s.keyman.com/kmw/engine/$BUILD_NUMBER/src" + done # Final phase: build the PR and push it. cd "$S_KEYMAN_COM" - # git config user.name "Keyman Build Server" - # git config user.email "keyman-server@users.noreply.github.com" + git config user.name "Keyman Build Server" + git config user.email "keyman-server@users.noreply.github.com" git add "kmw/engine/$BUILD_NUMBER" - # git commit -m "KeymanWeb release $BUILD_NUMBER (automatic)" - # git push https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master + git commit -m "KeymanWeb release $BUILD_NUMBER (automatic)" + git push https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master builder_finish_action success publish-s.keyman fi From 6ffbb2a551cca7d7d014f87600f1dc30e7b455c3 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Tue, 10 Jan 2023 09:17:03 +0700 Subject: [PATCH 3/8] feat(web): implements publish-downloads action --- web/ci.sh | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 84 insertions(+), 5 deletions(-) diff --git a/web/ci.sh b/web/ci.sh index 2eb0da47a5..7bb39f164e 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -36,6 +36,10 @@ builder_parse "$@" #### +TIER=`cat ../TIER.md` +BUILD_NUMBER=`cat ../VERSION.md` +S_KEYMAN_COM=../../s.keyman.com + if builder_start_action build; then # Build step: since CI builds start (and should start) from scratch, run the following # three actions: @@ -89,10 +93,6 @@ if builder_start_action validate-size; then fi if builder_start_action publish-s.keyman; then - TIER=`cat ../TIER.md` - BUILD_NUMBER=`cat ../VERSION.md` - S_KEYMAN_COM=../../s.keyman.com - # First phase: make sure the s.keyman.com repo is locally-available and up to date. pushd "$S_KEYMAN_COM" if builder_has_option --password; then @@ -130,7 +130,86 @@ if builder_start_action publish-s.keyman; then builder_finish_action success publish-s.keyman fi +# Note: for now, this command is used to prepare the artifacts used by the download site, but +# NOT to actually UPLOAD them via rsync or to produce related .download_info files. if builder_start_action publish-downloads; then -# + VERSION_BUILD_REGEX="^[0-9]+\.[0-9]+\.([0-9]+)$" + + if [[ $BUILD_NUMBER =~ $VERSION_BUILD_REGEX ]]; then + BUILD_COUNTER="${BASH_REMATCH[1]}" + else + builder_finish_action failure publish-downloads + exit 0 + fi + + UPLOAD_PATH="build/upload/$BUILD_NUMBER" + + # --- First action artifact - the KMW zip file --- + ZIP="$UPLOAD_PATH/keymanweb-$BUILD_NUMBER.zip" + + # RSYNC_HOME should be pre-set environment variables. + # (7Z_HOME is illegal as a variable name in BASH b/c leading digit.) + mkdir -p "$UPLOAD_PATH" + + # Nifty tidbit: https://stackoverflow.com/questions/592620/how-can-i-check-if-a-program-exists-from-a-bash-script + # If we're fine with ensuring that the program is available via path, we can just use that on + # Win machines. The decision was made to continue relying on an environment variable for 7-zip, though. + + COMPRESS_CMD= + COMPRESS_ADD= + + # Marc's preference; use $SEVEN_Z_HOME and have the BAs set up with THAT as an env var. + if [ -n "${SEVEN_Z_HOME+x}" ] &> /dev/null; then + echo "7z command available" + COMPRESS_CMD="$SEVEN_Z_HOME/7z" + COMPRESS_ADD="a -bd -bb0 -r" # add, hide progress, log level 0, recursive + COMPRESS_RENAME="rn" + fi + + if [[ -z "${COMPRESS_CMD}" ]] ; then + if command -v zip &> /dev/null; then + echo "zip command available" + # Note: does not support within-archive renames! + COMPRESS_CMD=zip + COMPRESS_ADD="-r" + else + echo "${COLOR_RED}Fallback approach failed: zip command unavailable${COLOR_RESET}" >&2 + builder_finish_action failure publish-downloads + exit 1 + fi + fi + + pushd build/app/web/release + "${COMPRESS_CMD}" $COMPRESS_ADD ../../../../$ZIP * + cd .. + "${COMPRESS_CMD}" $COMPRESS_ADD ../../../$ZIP debug + popd + + pushd build/app/ui/release + "${COMPRESS_CMD}" $COMPRESS_ADD ../../../../$ZIP * + cd .. + "${COMPRESS_CMD}" $COMPRESS_ADD ../../../$ZIP debug + popd + + # --- Second action artifact - the 'static' folder (hosted user testing on downloads.keyman.com) --- + + echo "" + echo "Building \`static/\` folder for long-term hosting of testing resources..." + STATIC="$UPLOAD_PATH/static" + mkdir -p "$STATIC" + + mkdir -p "$STATIC/build" + cp -rf build/app "$STATIC/build/app" + cp -rf build/engine "$STATIC/build/engine" + cp -rf build/tools "$STATIC/build/tools" + # avoid build/upload, since that's the folder we're building! + + cp -f index.html "$STATIC/index.html" + + mkdir -p "$STATIC/src/tools" + cp -rf src/tools/testing "$STATIC/src/tools/testing" + cp -rf src/test "$STATIC/src/test" + cp -rf src/samples "$STATIC/src/samples" + builder_finish_action success publish-downloads fi \ No newline at end of file From 5b265a13212d66f8ee93ab63a8f792af54bfff72 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Tue, 10 Jan 2023 09:33:26 +0700 Subject: [PATCH 4/8] change(web): build counter unused in current implementation --- web/ci.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/web/ci.sh b/web/ci.sh index 7bb39f164e..2d1a8c5fd4 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -133,15 +133,6 @@ fi # Note: for now, this command is used to prepare the artifacts used by the download site, but # NOT to actually UPLOAD them via rsync or to produce related .download_info files. if builder_start_action publish-downloads; then - VERSION_BUILD_REGEX="^[0-9]+\.[0-9]+\.([0-9]+)$" - - if [[ $BUILD_NUMBER =~ $VERSION_BUILD_REGEX ]]; then - BUILD_COUNTER="${BASH_REMATCH[1]}" - else - builder_finish_action failure publish-downloads - exit 0 - fi - UPLOAD_PATH="build/upload/$BUILD_NUMBER" # --- First action artifact - the KMW zip file --- From 906c9800df44a8c964870ccda0f8f5bc41cd6b16 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Tue, 10 Jan 2023 09:45:43 +0700 Subject: [PATCH 5/8] change(web): improved debug path for publish-s.keyman --- web/ci.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/web/ci.sh b/web/ci.sh index 2d1a8c5fd4..3a4e5fcdbb 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -121,11 +121,15 @@ if builder_start_action publish-s.keyman; then # Final phase: build the PR and push it. cd "$S_KEYMAN_COM" - git config user.name "Keyman Build Server" - git config user.email "keyman-server@users.noreply.github.com" + if builder_has_option --password; then + git config user.name "Keyman Build Server" + git config user.email "keyman-server@users.noreply.github.com" + fi git add "kmw/engine/$BUILD_NUMBER" - git commit -m "KeymanWeb release $BUILD_NUMBER (automatic)" - git push https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master + if builder_has_option --password; then + git commit -m "KeymanWeb release $BUILD_NUMBER (automatic)" + git push https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master + fi builder_finish_action success publish-s.keyman fi From ee2b47dff23d8c873b380b8e50fc8cd75a5c069c Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Wed, 1 Feb 2023 12:44:31 +0700 Subject: [PATCH 6/8] chore(web): changes per review concerns --- web/ci.sh | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/web/ci.sh b/web/ci.sh index 3a4e5fcdbb..e1224b6ec6 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -27,10 +27,9 @@ builder_describe "Defines and implements the CI build steps for Keyman Engine fo "test Runs all unit tests." \ "post-test Runs post-test cleanup. Should be run even if a prior step fails." \ "validate-size Runs the build-size comparison check" \ - "publish-s.keyman Prepares an s.keyman.com PR (intended for release builds)" \ - "publish-downloads Prepares the upload to downloads.keyman.com (intended for release builds)" \ - "--debug Runs this script in local-development mode; reports and tests will be locally logged" \ - "--password=PASSWORD Used to supply passwords needed by certain actions" + "prepare-s.keyman Prepares an s.keyman.com PR (intended for release builds)" \ + "prepare-downloads Prepares the upload to downloads.keyman.com (intended for release builds)" \ + "--debug Runs this script in local-development mode; reports and tests will be locally logged" builder_parse "$@" @@ -92,16 +91,13 @@ if builder_start_action validate-size; then builder_finish_action success validate-size fi -if builder_start_action publish-s.keyman; then +if builder_start_action prepare-s.keyman; then # First phase: make sure the s.keyman.com repo is locally-available and up to date. pushd "$S_KEYMAN_COM" - if builder_has_option --password; then - git pull https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master - else - # For testing on a local development machine / a machine with the repo already loaded. - git checkout master - git pull - fi + + # For testing on a local development machine / a machine with the repo already loaded. + git checkout master + git pull popd # Second phase: copy the artifacts over @@ -119,24 +115,14 @@ if builder_start_action publish-s.keyman; then node build/tools/building/sourcemap-root/index.mjs null "$sourcemap" --sourceRoot "https://s.keyman.com/kmw/engine/$BUILD_NUMBER/src" done - # Final phase: build the PR and push it. - cd "$S_KEYMAN_COM" - if builder_has_option --password; then - git config user.name "Keyman Build Server" - git config user.email "keyman-server@users.noreply.github.com" - fi - git add "kmw/engine/$BUILD_NUMBER" - if builder_has_option --password; then - git commit -m "KeymanWeb release $BUILD_NUMBER (automatic)" - git push https://keyman-server:$PASSWORD@github.com/keymanapp/s.keyman.com.git master - fi + # Actual construction of the PR will be left to CI-config scripting for now. - builder_finish_action success publish-s.keyman + builder_finish_action success prepare-s.keyman fi # Note: for now, this command is used to prepare the artifacts used by the download site, but # NOT to actually UPLOAD them via rsync or to produce related .download_info files. -if builder_start_action publish-downloads; then +if builder_start_action prepare-downloads; then UPLOAD_PATH="build/upload/$BUILD_NUMBER" # --- First action artifact - the KMW zip file --- @@ -169,7 +155,7 @@ if builder_start_action publish-downloads; then COMPRESS_ADD="-r" else echo "${COLOR_RED}Fallback approach failed: zip command unavailable${COLOR_RESET}" >&2 - builder_finish_action failure publish-downloads + builder_finish_action failure prepare-downloads exit 1 fi fi @@ -206,5 +192,5 @@ if builder_start_action publish-downloads; then cp -rf src/test "$STATIC/src/test" cp -rf src/samples "$STATIC/src/samples" - builder_finish_action success publish-downloads + builder_finish_action success prepare-downloads fi \ No newline at end of file From a3cadbabeb21d7ebdc04ab82d2bd89575cd4c9b1 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Wed, 1 Feb 2023 13:02:07 +0700 Subject: [PATCH 7/8] chore(web): more tweaks per review --- web/ci.sh | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/web/ci.sh b/web/ci.sh index e1224b6ec6..54c32575b6 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -36,7 +36,6 @@ builder_parse "$@" #### TIER=`cat ../TIER.md` -BUILD_NUMBER=`cat ../VERSION.md` S_KEYMAN_COM=../../s.keyman.com if builder_start_action build; then @@ -103,7 +102,7 @@ if builder_start_action prepare-s.keyman; then # Second phase: copy the artifacts over # The main build products are expected to reside at the root of this folder. - BASE_PUBLISH_FOLDER="$S_KEYMAN_COM/kmw/engine/$BUILD_NUMBER" + BASE_PUBLISH_FOLDER="$S_KEYMAN_COM/kmw/engine/$VERSION" mkdir "$BASE_PUBLISH_FOLDER" cp -Rf build/app/web/release/* "$BASE_PUBLISH_FOLDER" @@ -112,7 +111,7 @@ if builder_start_action prepare-s.keyman; then # Third phase: tweak the sourcemaps # We can use an alt-mode of Web's sourcemap-root tool for this. for sourcemap in "$BASE_PUBLISH_FOLDER/"*.map; do - node build/tools/building/sourcemap-root/index.mjs null "$sourcemap" --sourceRoot "https://s.keyman.com/kmw/engine/$BUILD_NUMBER/src" + node build/tools/building/sourcemap-root/index.mjs null "$sourcemap" --sourceRoot "https://s.keyman.com/kmw/engine/$VERSION/src" done # Actual construction of the PR will be left to CI-config scripting for now. @@ -123,33 +122,26 @@ fi # Note: for now, this command is used to prepare the artifacts used by the download site, but # NOT to actually UPLOAD them via rsync or to produce related .download_info files. if builder_start_action prepare-downloads; then - UPLOAD_PATH="build/upload/$BUILD_NUMBER" + UPLOAD_PATH="build/upload/$VERSION" # --- First action artifact - the KMW zip file --- - ZIP="$UPLOAD_PATH/keymanweb-$BUILD_NUMBER.zip" + ZIP="$UPLOAD_PATH/keymanweb-$VERSION.zip" - # RSYNC_HOME should be pre-set environment variables. - # (7Z_HOME is illegal as a variable name in BASH b/c leading digit.) mkdir -p "$UPLOAD_PATH" - # Nifty tidbit: https://stackoverflow.com/questions/592620/how-can-i-check-if-a-program-exists-from-a-bash-script - # If we're fine with ensuring that the program is available via path, we can just use that on - # Win machines. The decision was made to continue relying on an environment variable for 7-zip, though. + # On Windows, we use 7-zip (SEVEN_Z_HOME env var). On other platforms, we use zip. COMPRESS_CMD= COMPRESS_ADD= # Marc's preference; use $SEVEN_Z_HOME and have the BAs set up with THAT as an env var. - if [ -n "${SEVEN_Z_HOME+x}" ] &> /dev/null; then - echo "7z command available" + if [ ! -z "${SEVEN_Z_HOME+x}" ]; then COMPRESS_CMD="$SEVEN_Z_HOME/7z" COMPRESS_ADD="a -bd -bb0 -r" # add, hide progress, log level 0, recursive - COMPRESS_RENAME="rn" fi if [[ -z "${COMPRESS_CMD}" ]] ; then if command -v zip &> /dev/null; then - echo "zip command available" # Note: does not support within-archive renames! COMPRESS_CMD=zip COMPRESS_ADD="-r" From f8b58424de1194b74841e95ef28ad4ce502b3279 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Wed, 1 Feb 2023 14:05:01 +0700 Subject: [PATCH 8/8] chore(web): even more requested changes --- web/ci.sh | 51 ++++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/web/ci.sh b/web/ci.sh index 54c32575b6..d9dfcbf586 100755 --- a/web/ci.sh +++ b/web/ci.sh @@ -22,22 +22,23 @@ cd "$THIS_SCRIPT_PATH" # ################################ Main script ################################ +S_KEYMAN_COM= + builder_describe "Defines and implements the CI build steps for Keyman Engine for Web (KMW)." \ "build" \ - "test Runs all unit tests." \ - "post-test Runs post-test cleanup. Should be run even if a prior step fails." \ - "validate-size Runs the build-size comparison check" \ - "prepare-s.keyman Prepares an s.keyman.com PR (intended for release builds)" \ - "prepare-downloads Prepares the upload to downloads.keyman.com (intended for release builds)" \ - "--debug Runs this script in local-development mode; reports and tests will be locally logged" + "test Runs all unit tests." \ + "post-test Runs post-test cleanup. Should be run even if a prior step fails." \ + "validate-size Runs the build-size comparison check" \ + "prepare Prepare upload artifacts for specified target(s)" \ + ":s.keyman.com Target: builds artifacts for s.keyman.com " \ + ":downloads.keyman.com Target: builds artifacts for downloads.keyman.com" \ + "--debug Runs this script in local-development mode; reports and tests will be locally logged" \ + "--s.keyman.com=S_KEYMAN_COM Sets the root location of a checked-out s.keyman.com repo" builder_parse "$@" #### -TIER=`cat ../TIER.md` -S_KEYMAN_COM=../../s.keyman.com - if builder_start_action build; then # Build step: since CI builds start (and should start) from scratch, run the following # three actions: @@ -90,20 +91,26 @@ if builder_start_action validate-size; then builder_finish_action success validate-size fi -if builder_start_action prepare-s.keyman; then - # First phase: make sure the s.keyman.com repo is locally-available and up to date. - pushd "$S_KEYMAN_COM" +if builder_start_action prepare:s.keyman.com; then + if ! builder_has_option --s.keyman.com; then + builder_die "--s.keyman.com is unset!" + fi - # For testing on a local development machine / a machine with the repo already loaded. - git checkout master - git pull - popd + if builder_has_option --debug; then + # First phase: make sure the s.keyman.com repo is locally-available and up to date. + pushd "$S_KEYMAN_COM" + + # For testing on a local development machine / a machine with the repo already loaded. + git checkout master + git pull + popd + fi # Second phase: copy the artifacts over # The main build products are expected to reside at the root of this folder. BASE_PUBLISH_FOLDER="$S_KEYMAN_COM/kmw/engine/$VERSION" - mkdir "$BASE_PUBLISH_FOLDER" + mkdir -p "$BASE_PUBLISH_FOLDER" cp -Rf build/app/web/release/* "$BASE_PUBLISH_FOLDER" cp -Rf build/app/ui/release/* "$BASE_PUBLISH_FOLDER" @@ -116,12 +123,12 @@ if builder_start_action prepare-s.keyman; then # Actual construction of the PR will be left to CI-config scripting for now. - builder_finish_action success prepare-s.keyman + builder_finish_action success prepare:s.keyman.com fi # Note: for now, this command is used to prepare the artifacts used by the download site, but # NOT to actually UPLOAD them via rsync or to produce related .download_info files. -if builder_start_action prepare-downloads; then +if builder_start_action prepare:downloads.keyman.com; then UPLOAD_PATH="build/upload/$VERSION" # --- First action artifact - the KMW zip file --- @@ -146,9 +153,7 @@ if builder_start_action prepare-downloads; then COMPRESS_CMD=zip COMPRESS_ADD="-r" else - echo "${COLOR_RED}Fallback approach failed: zip command unavailable${COLOR_RESET}" >&2 - builder_finish_action failure prepare-downloads - exit 1 + builder_die "7z and zip commands are both unavailable" fi fi @@ -184,5 +189,5 @@ if builder_start_action prepare-downloads; then cp -rf src/test "$STATIC/src/test" cp -rf src/samples "$STATIC/src/samples" - builder_finish_action success prepare-downloads + builder_finish_action success prepare:downloads.keyman.com fi \ No newline at end of file