diff --git a/common/tools/hextobin/build.sh b/common/tools/hextobin/build.sh index 28eaa853d5..45706c35b4 100755 --- a/common/tools/hextobin/build.sh +++ b/common/tools/hextobin/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -17,5 +18,5 @@ builder_describe_outputs \ builder_parse "$@" builder_run_action clean rm -rf build/ node_modules/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build diff --git a/common/tools/sourcemap-path-remapper/build.sh b/common/tools/sourcemap-path-remapper/build.sh index 44c3692dae..871de4c546 100755 --- a/common/tools/sourcemap-path-remapper/build.sh +++ b/common/tools/sourcemap-path-remapper/build.sh @@ -10,6 +10,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -34,7 +35,7 @@ fi ### CONFIGURE ACTIONS if builder_start_action configure; then - verify_npm_setup + node_select_version_and_npm_ci builder_finish_action success configure fi diff --git a/common/web/keyman-version/build.sh b/common/web/keyman-version/build.sh index 95730b2793..0c9657f74b 100755 --- a/common/web/keyman-version/build.sh +++ b/common/web/keyman-version/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" ################################ Main script ################################ @@ -53,6 +54,6 @@ export default KEYMAN_VERSION; } builder_run_action clean rm -rf version.inc.ts keyman-version.mts build/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build do_build builder_run_action publish builder_publish_npm diff --git a/common/web/langtags/build.sh b/common/web/langtags/build.sh index d04319fc77..d1b951b624 100755 --- a/common/web/langtags/build.sh +++ b/common/web/langtags/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Build Keyman langtags.js common module" \ @@ -32,7 +33,7 @@ function compile_langtags() { } function do_configure() { - verify_npm_setup + node_select_version_and_npm_ci compile_langtags } diff --git a/common/web/types/build.sh b/common/web/types/build.sh index b1eaa8b3ff..1ece69f2af 100755 --- a/common/web/types/build.sh +++ b/common/web/types/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Build Keyman common file types module" \ @@ -76,7 +77,7 @@ function compile_schemas() { function do_configure() { compile_schemas - verify_npm_setup + node_select_version_and_npm_ci } function do_test() { diff --git a/core/include/ldml/build.sh b/core/include/ldml/build.sh index 650bd7adf7..f2633ed348 100755 --- a/core/include/ldml/build.sh +++ b/core/include/ldml/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Keyman ldml-keyboard-constants package" \ @@ -30,7 +31,7 @@ builder_parse "$@" #------------------------------------------------------------------------------------------------------------------- builder_run_action clean rm -rf ./build/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build # builder_run_action test # no tests at this time builder_run_action publish builder_publish_npm diff --git a/developer/src/common/web/test-helpers/build.sh b/developer/src/common/web/test-helpers/build.sh index 81042fff19..98b8e0b184 100755 --- a/developer/src/common/web/test-helpers/build.sh +++ b/developer/src/common/web/test-helpers/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" builder_describe "Keyman Developer unit test helpers" \ "@/developer/src/common/web/utils" \ @@ -20,6 +21,6 @@ builder_parse "$@" #------------------------------------------------------------------------------------------------------------------- builder_run_action clean rm -rf ./build/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build # builder_run_action test # no tests at this time diff --git a/developer/src/common/web/utils/build.sh b/developer/src/common/web/utils/build.sh index a8f6a1585f..648386e821 100755 --- a/developer/src/common/web/utils/build.sh +++ b/developer/src/common/web/utils/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Build Keyman Developer web utility module" \ @@ -47,7 +48,7 @@ function do_build() { } builder_run_action clean rm -rf ./build/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build do_build builder_run_action test builder_do_typescript_tests 45 builder_run_action publish builder_publish_npm diff --git a/developer/src/kmc-analyze/build.sh b/developer/src/kmc-analyze/build.sh index 4c09fabb43..72d434b35d 100755 --- a/developer/src/kmc-analyze/build.sh +++ b/developer/src/kmc-analyze/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Keyman Developer Compiler Analysis Tools" \ @@ -26,7 +27,7 @@ builder_parse "$@" #------------------------------------------------------------------------------------------------------------------- builder_run_action clean rm -rf ./build/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build builder_run_action api api-extractor run --local --verbose builder_run_action test builder_do_typescript_tests 70 diff --git a/developer/src/kmc-copy/build.sh b/developer/src/kmc-copy/build.sh index 9dd7d3d2e2..2e6a4a2357 100755 --- a/developer/src/kmc-copy/build.sh +++ b/developer/src/kmc-copy/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Build Keyman kmc-copy module" \ @@ -32,7 +33,7 @@ builder_parse "$@" builder_run_action clean rm -rf ./build/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build builder_run_action api api-extractor run --local --verbose diff --git a/developer/src/kmc-generate/build.sh b/developer/src/kmc-generate/build.sh index ca8b9615f4..51151f096d 100755 --- a/developer/src/kmc-generate/build.sh +++ b/developer/src/kmc-generate/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Build Keyman kmc-generate module" \ @@ -38,7 +39,7 @@ do_build() { } builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build do_build builder_run_action api api-extractor run --local --verbose builder_run_action test builder_do_typescript_tests diff --git a/developer/src/kmc-keyboard-info/build.sh b/developer/src/kmc-keyboard-info/build.sh index 7eaac99c02..a5f3f85303 100755 --- a/developer/src/kmc-keyboard-info/build.sh +++ b/developer/src/kmc-keyboard-info/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" builder_describe "Build Keyman kmc keyboard-info Compiler module" \ "@/common/web/langtags" \ @@ -31,7 +32,7 @@ builder_parse "$@" #------------------------------------------------------------------------------------------------------------------- builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build builder_run_action api api-extractor run --local --verbose builder_run_action test builder_do_typescript_tests diff --git a/developer/src/kmc-kmn/build.sh b/developer/src/kmc-kmn/build.sh index dc33cfd9c1..6cbad9393c 100755 --- a/developer/src/kmc-kmn/build.sh +++ b/developer/src/kmc-kmn/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Keyman Developer Compiler Module for .kmn to .kmx" \ @@ -43,7 +44,7 @@ fi #------------------------------------------------------------------------------------------------------------------- if builder_start_action configure; then - verify_npm_setup + node_select_version_and_npm_ci builder_finish_action success configure fi diff --git a/developer/src/kmc-ldml/build.sh b/developer/src/kmc-ldml/build.sh index 7f9ff0ad15..749e836e67 100755 --- a/developer/src/kmc-ldml/build.sh +++ b/developer/src/kmc-ldml/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" builder_describe "Keyman kmc Keyboard Compiler module" \ "@/common/web/keyman-version" \ @@ -38,7 +39,7 @@ function do_clean() { } function do_configure() { - verify_npm_setup + node_select_version_and_npm_ci do_build_abnf } diff --git a/developer/src/kmc-model-info/build.sh b/developer/src/kmc-model-info/build.sh index 60c1d23b0b..7e6f2c0648 100755 --- a/developer/src/kmc-model-info/build.sh +++ b/developer/src/kmc-model-info/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" builder_describe "Build Keyman kmc Lexical Model model-info Compiler module" \ "@/common/web/types" \ @@ -28,7 +29,7 @@ builder_parse "$@" #------------------------------------------------------------------------------------------------------------------- builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build builder_run_action api api-extractor run --local --verbose builder_run_action test builder_do_typescript_tests 55 diff --git a/developer/src/kmc-model/build.sh b/developer/src/kmc-model/build.sh index 550bb8a302..fcb58df54d 100755 --- a/developer/src/kmc-model/build.sh +++ b/developer/src/kmc-model/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Keyman kmc Lexical Model Compiler module" \ @@ -36,7 +37,7 @@ function do_build() { } builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build do_build builder_run_action api api-extractor run --local --verbose builder_run_action test builder_do_typescript_tests diff --git a/developer/src/kmc-package/build.sh b/developer/src/kmc-package/build.sh index 1e260c7b3e..5136245073 100755 --- a/developer/src/kmc-package/build.sh +++ b/developer/src/kmc-package/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" builder_describe "Build Keyman kmc Package Compiler module" \ @@ -33,7 +34,7 @@ builder_parse "$@" #------------------------------------------------------------------------------------------------------------------- builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build builder_run_action api api-extractor run --local --verbose builder_run_action test builder_do_typescript_tests diff --git a/developer/src/kmc/build.sh b/developer/src/kmc/build.sh index 0654bfd247..d30b2929f8 100755 --- a/developer/src/kmc/build.sh +++ b/developer/src/kmc/build.sh @@ -10,6 +10,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/developer/src/packages.inc.sh" builder_describe "Build Keyman Keyboard Compiler kmc" \ @@ -107,7 +108,7 @@ function do_bundle() { #------------------------------------------------------------------------------------------------------------------- builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build do_build builder_run_action test do_test builder_run_action api do_api diff --git a/developer/src/server/build.sh b/developer/src/server/build.sh index bd19066948..785fd496c0 100755 --- a/developer/src/server/build.sh +++ b/developer/src/server/build.sh @@ -7,6 +7,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/jq.inc.sh" builder_describe "Build Keyman Developer Server" \ @@ -49,7 +50,7 @@ function clean_server() { } function configure_server() { - verify_npm_setup + node_select_version_and_npm_ci # See https://github.com/bubenshchykov/ngrok/issues/254, https://github.com/bubenshchykov/ngrok/pull/255 # TODO: this is horrible; is there a way we can avoid this? rm -f "$KEYMAN_ROOT"/node_modules/ngrok/bin/ngrok diff --git a/docs/builder.md b/docs/builder.md index 66815c6325..d1a5895fca 100644 --- a/docs/builder.md +++ b/docs/builder.md @@ -266,7 +266,7 @@ for example: ```bash if builder_start_action configure; then - verify_npm_setup + node_select_version_and_npm_ci builder_finish_action success configure fi @@ -1089,7 +1089,7 @@ longhand form. } builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo - builder_run_action configure verify_npm_setup + builder_run_action configure node_select_version_and_npm_ci builder_run_action build do_build ``` diff --git a/resources/build/build-utils-ci.inc.sh b/resources/build/build-utils-ci.inc.sh index bd9fc7995b..33c074037a 100644 --- a/resources/build/build-utils-ci.inc.sh +++ b/resources/build/build-utils-ci.inc.sh @@ -1,4 +1,5 @@ -#!/usr/bin/env bash +# shellcheck shell=bash +# Keyman is copyright (C) SIL Global. MIT License. # # This script gets CI / pull request details for builds, part of the build-utils # builder_ suite of functions. All functions and variables in this file have the diff --git a/resources/build/builder-full.inc.sh b/resources/build/builder-full.inc.sh index 9af6012afe..e937582565 100644 --- a/resources/build/builder-full.inc.sh +++ b/resources/build/builder-full.inc.sh @@ -1,4 +1,5 @@ -# builder.inc.sh +# shellcheck shell=bash +# Keyman is copyright (C) SIL Global. MIT License. # # Wrapper for Builder scripts. Do not confuse this with # /resources/builder.inc.sh which has the full implementation of builder scripts diff --git a/resources/build/jq.inc.sh b/resources/build/jq.inc.sh index e45c5657b8..59490328d5 100644 --- a/resources/build/jq.inc.sh +++ b/resources/build/jq.inc.sh @@ -1,4 +1,5 @@ # shellcheck shell=bash +# Keyman is copyright (C) SIL Global. MIT License. # # Setup JQ environment variable according to the user's system # diff --git a/resources/build/node.inc.sh b/resources/build/node.inc.sh new file mode 100644 index 0000000000..15e66da78c --- /dev/null +++ b/resources/build/node.inc.sh @@ -0,0 +1,79 @@ +# shellcheck shell=bash +# Keyman is copyright (C) SIL Global. MIT License. + +[[ -z ${_utils_inc_sh+x} ]] && source "${KEYMAN_ROOT}/resources/build/utils.inc.sh" + +# Verifies that node is installed, and installs npm packages, but only once per +# build invocation +node_select_version_and_npm_ci() { + # We'll piggy-back on the builder module dependency build state to determine + # if npm ci has been called in the current script invocation. Adding the + # prefix /external/ to module name in order to differentiate between this and + # internal modules (although it is unlikely to ever collide!); we will also + # use this pattern for other similar external dependencies in future. These + # functions are safe to call even in a non-builder context (they do nothing or + # return 1 -- not built) + if builder_has_module_been_built /external/npm-ci; then + return 0 + fi + builder_set_module_has_been_built /external/npm-ci + + # If we are on CI environment, automatically select a node version with nvm + # Also, a developer can set KEYMAN_USE_NVM variable to get this behaviour + # automatically too (see /docs/build/node.md) + if [[ "$KEYMAN_VERSION_ENVIRONMENT" != local || ! -z "${KEYMAN_USE_NVM+x}" ]]; then + _node_select_version_with_nvm + fi + + # Check if Node.JS/npm is installed. + type npm >/dev/null ||\ + builder_die "Build environment setup error detected! Please ensure Node.js is installed!" + + pushd "$KEYMAN_ROOT" > /dev/null + + offline_param= + if builder_try_offline; then + builder_echo "Trying offline build" + offline_param=--prefer-offline + fi + try_multiple_times npm ${offline_param} ci + + popd > /dev/null +} + +_node_print_expected_version() { + "$JQ" -r '.engines.node' "$KEYMAN_ROOT/package.json" +} + +# Use nvm to select a node version according to package.json +# see /docs/build/node.md +_node_select_version_with_nvm() { + local REQUIRED_NODE_VERSION CURRENT_NODE_VERSION + + REQUIRED_NODE_VERSION="$(_node_print_expected_version)" + if [[ -z "$REQUIRED_NODE_VERSION" ]]; then + builder_die "Could not find expected Node.js version in $KEYMAN_ROOT/package.json" + fi + + if builder_is_windows; then + CURRENT_NODE_VERSION="$(node --version)" + if [[ "${CURRENT_NODE_VERSION}" != "v${REQUIRED_NODE_VERSION}" ]]; then + start //wait //b nvm install "${REQUIRED_NODE_VERSION}" + start //wait //b nvm use "${REQUIRED_NODE_VERSION}" + fi + else + # launch nvm in a sub process, see _builder_nvm.sh for details + "${KEYMAN_ROOT}/resources/build/_builder_nvm.sh" "${REQUIRED_NODE_VERSION}" + fi + + # Now, check that the node version is correct, on all systems + + # Note: On windows, `nvm use` and `nvm install` always return success. + # https://github.com/coreybutler/nvm-windows/issues/738 + + # note the 'v' prefix that node emits (and npm doesn't!) + CURRENT_NODE_VERSION="$(node --version)" + if [[ "$CURRENT_NODE_VERSION" != "v$REQUIRED_NODE_VERSION" ]]; then + builder_die "Attempted to select node.js version $REQUIRED_NODE_VERSION but found $CURRENT_NODE_VERSION instead" + fi +} diff --git a/resources/build/utils.inc.sh b/resources/build/utils.inc.sh index bf60019dcd..ef637d905d 100644 --- a/resources/build/utils.inc.sh +++ b/resources/build/utils.inc.sh @@ -1,9 +1,11 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. # shellcheck disable=SC2154 . "${KEYMAN_ROOT}/resources/build/jq.inc.sh" +_utils_inc_sh=1 + # Allows for a quick macOS check for those scripts requiring a macOS environment. verify_on_mac() { if ! builder_is_macos; then @@ -122,87 +124,6 @@ _try_multiple_times ( ) { fi } -# -# Verifies that node is installed, and installs npm packages, but only once per -# build invocation -# -# TODO: rename to builder_node_select_version_and_npm_ci, move to builder.node.inc.sh -verify_npm_setup() { - # We'll piggy-back on the builder module dependency build state to determine - # if npm ci has been called in the current script invocation. Adding the - # prefix /external/ to module name in order to differentiate between this and - # internal modules (although it is unlikely to ever collide!); we will also - # use this pattern for other similar external dependencies in future. These - # functions are safe to call even in a non-builder context (they do nothing or - # return 1 -- not built) - if builder_has_module_been_built /external/npm-ci; then - return 0 - fi - builder_set_module_has_been_built /external/npm-ci - - # If we are on CI environment, automatically select a node version with nvm - # Also, a developer can set KEYMAN_USE_NVM variable to get this behaviour - # automatically too (see /docs/build/node.md) - if [[ "$KEYMAN_VERSION_ENVIRONMENT" != local || ! -z "${KEYMAN_USE_NVM+x}" ]]; then - _select_node_version_with_nvm - fi - - # Check if Node.JS/npm is installed. - type npm >/dev/null ||\ - builder_die "Build environment setup error detected! Please ensure Node.js is installed!" - - pushd "$KEYMAN_ROOT" > /dev/null - - offline_param= - if builder_try_offline; then - builder_echo "Trying offline build" - offline_param=--prefer-offline - fi - try_multiple_times npm ${offline_param} ci - - popd > /dev/null -} - -# TODO: rename to _node_print_expected_version, move to builder.node.inc.sh -_print_expected_node_version() { - "$JQ" -r '.engines.node' "$KEYMAN_ROOT/package.json" -} - -# Use nvm to select a node version according to package.json -# see /docs/build/node.md -# -# TODO: rename to _node_select_version_with_nvm, move to builder.node.inc.sh -_select_node_version_with_nvm() { - local REQUIRED_NODE_VERSION CURRENT_NODE_VERSION - - REQUIRED_NODE_VERSION="$(_print_expected_node_version)" - if [[ -z "$REQUIRED_NODE_VERSION" ]]; then - builder_die "Could not find expected Node.js version in $KEYMAN_ROOT/package.json" - fi - - if builder_is_windows; then - CURRENT_NODE_VERSION="$(node --version)" - if [[ "${CURRENT_NODE_VERSION}" != "v${REQUIRED_NODE_VERSION}" ]]; then - start //wait //b nvm install "${REQUIRED_NODE_VERSION}" - start //wait //b nvm use "${REQUIRED_NODE_VERSION}" - fi - else - # launch nvm in a sub process, see _builder_nvm.sh for details - "${KEYMAN_ROOT}/resources/build/_builder_nvm.sh" "${REQUIRED_NODE_VERSION}" - fi - - # Now, check that the node version is correct, on all systems - - # Note: On windows, `nvm use` and `nvm install` always return success. - # https://github.com/coreybutler/nvm-windows/issues/738 - - # note the 'v' prefix that node emits (and npm doesn't!) - CURRENT_NODE_VERSION="$(node --version)" - if [[ "$CURRENT_NODE_VERSION" != "v$REQUIRED_NODE_VERSION" ]]; then - builder_die "Attempted to select node.js version $REQUIRED_NODE_VERSION but found $CURRENT_NODE_VERSION instead" - fi -} - # # Wrapper for check-markdown tool to verify links within and validity of all .md # files in a folder and its sub-folders diff --git a/resources/build/version/build.sh b/resources/build/version/build.sh index f9b897296e..ccf97a2a19 100755 --- a/resources/build/version/build.sh +++ b/resources/build/version/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -17,5 +18,5 @@ builder_describe_outputs \ builder_parse "$@" builder_run_action clean rm -rf build/ node_modules/ dist/ lib/ -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build diff --git a/resources/builder.inc.sh b/resources/builder.inc.sh index ba372d1e41..249b3d585b 100755 --- a/resources/builder.inc.sh +++ b/resources/builder.inc.sh @@ -627,7 +627,7 @@ builder_has_action() { # } # # builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo -# builder_run_action configure verify_npm_setup +# builder_run_action configure node_select_version_and_npm_ci # builder_run_action build do_build # ``` # diff --git a/resources/tools/check-markdown/build.sh b/resources/tools/check-markdown/build.sh index 4b5f91c88d..01dd9d81c9 100755 --- a/resources/tools/check-markdown/build.sh +++ b/resources/tools/check-markdown/build.sh @@ -6,6 +6,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -21,6 +22,6 @@ builder_describe_outputs \ builder_parse "$@" builder_run_action clean rm -rf build/ tsconfig.tsbuildinfo -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action build tsc --build # builder_run_action test mocha diff --git a/web/src/app/browser/build.sh b/web/src/app/browser/build.sh index 43b43606f7..a61ce1517c 100755 --- a/web/src/app/browser/build.sh +++ b/web/src/app/browser/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=app/browser . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -80,7 +81,7 @@ compile_and_copy() { cp "$KEYMAN_ROOT/web/src/engine/predictive-text/worker-thread/build/filesize-profile.log" "$PROFILE_DEST/lm-worker-filesize.log" } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean do_clean builder_run_action build compile_and_copy builder_run_action test test-headless-typescript $SUBPROJECT_NAME diff --git a/web/src/app/ui/build.sh b/web/src/app/ui/build.sh index f205b52c02..045cdac8d0 100755 --- a/web/src/app/ui/build.sh +++ b/web/src/app/ui/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=app/ui . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -67,7 +68,7 @@ compile_and_copy() { prepare } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean do_clean builder_run_action build compile_and_copy diff --git a/web/src/app/webview/build.sh b/web/src/app/webview/build.sh index 47affd730d..403aaec4e4 100755 --- a/web/src/app/webview/build.sh +++ b/web/src/app/webview/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=app/webview . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -80,6 +81,6 @@ compile_and_copy() { "$KEYMAN_ROOT/web/src/test/manual/embed/android-harness/build.sh" } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "$KEYMAN_ROOT/web/build/$SUBPROJECT_NAME" builder_run_action build compile_and_copy \ No newline at end of file diff --git a/web/src/engine/attachment/build.sh b/web/src/engine/attachment/build.sh index a541e7d571..042c5aa83e 100755 --- a/web/src/engine/attachment/build.sh +++ b/web/src/engine/attachment/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" # Imports common Web build-script definitions & functions SUBPROJECT_NAME=engine/attachment . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/web/common.inc.sh" # ################################ Main script ################################ @@ -40,7 +41,7 @@ do_build () { --format esm } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "$KEYMAN_ROOT/web/build/$SUBPROJECT_NAME" builder_run_action build do_build builder_run_action test test-headless-typescript "${SUBPROJECT_NAME}" diff --git a/web/src/engine/common/web-utils/build.sh b/web/src/engine/common/web-utils/build.sh index c388d7ded3..2ff9a03b06 100755 --- a/web/src/engine/common/web-utils/build.sh +++ b/web/src/engine/common/web-utils/build.sh @@ -10,6 +10,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "${KEYMAN_ROOT}/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" SUBPROJECT_NAME=engine/common/web-utils BUILD_DIR="/web/src/engine/common/web-utils/build" @@ -56,7 +57,7 @@ function do_test() { c8 mocha --recursive $FLAGS ./src/tests/ } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf build/ builder_run_action build do_build builder_run_action test do_test diff --git a/web/src/engine/dom-utils/build.sh b/web/src/engine/dom-utils/build.sh index a010ca0ffa..df6180e2ed 100755 --- a/web/src/engine/dom-utils/build.sh +++ b/web/src/engine/dom-utils/build.sh @@ -7,6 +7,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # Imports common Web build-script definitions & functions SUBPROJECT_NAME=engine/dom-utils @@ -33,7 +34,7 @@ builder_parse "$@" #### Build action definitions #### -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "$KEYMAN_ROOT/web/build/$SUBPROJECT_NAME" builder_run_action build compile $SUBPROJECT_NAME diff --git a/web/src/engine/element-wrappers/build.sh b/web/src/engine/element-wrappers/build.sh index ef568e6ecc..055c93b00e 100755 --- a/web/src/engine/element-wrappers/build.sh +++ b/web/src/engine/element-wrappers/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=engine/element-wrappers . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -38,7 +39,7 @@ do_build () { --format esm } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "$KEYMAN_ROOT/web/build/$SUBPROJECT_NAME" builder_run_action build do_build diff --git a/web/src/engine/events/build.sh b/web/src/engine/events/build.sh index 6691d6b91e..eeeb144949 100755 --- a/web/src/engine/events/build.sh +++ b/web/src/engine/events/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=engine/events . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -39,7 +40,7 @@ do_build () { --format esm } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "${KEYMAN_ROOT}/web/build/${SUBPROJECT_NAME}" builder_run_action build do_build builder_run_action test test-headless "${SUBPROJECT_NAME}" diff --git a/web/src/engine/interfaces/build.sh b/web/src/engine/interfaces/build.sh index 49689840ca..3ea80fdc7a 100755 --- a/web/src/engine/interfaces/build.sh +++ b/web/src/engine/interfaces/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=engine/interfaces . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -40,7 +41,7 @@ do_build () { --format esm } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "${KEYMAN_ROOT}/web/build/${SUBPROJECT_NAME}" builder_run_action build do_build builder_run_action test test-headless "${SUBPROJECT_NAME}" diff --git a/web/src/engine/js-processor/build.sh b/web/src/engine/js-processor/build.sh index 885ee7fa30..0fc0ef7e7a 100755 --- a/web/src/engine/js-processor/build.sh +++ b/web/src/engine/js-processor/build.sh @@ -10,6 +10,7 @@ SUBPROJECT_NAME=engine/js-processor . "${KEYMAN_ROOT}/web/common.inc.sh" . "${KEYMAN_ROOT}/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -35,7 +36,7 @@ do_build () { --format esm } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "${KEYMAN_ROOT}/web/build/${SUBPROJECT_NAME}" builder_run_action build do_build builder_run_action test test-headless "${SUBPROJECT_NAME}" "" diff --git a/web/src/engine/keyboard-storage/build.sh b/web/src/engine/keyboard-storage/build.sh index 09fc4061ac..a6a233bfd8 100755 --- a/web/src/engine/keyboard-storage/build.sh +++ b/web/src/engine/keyboard-storage/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=engine/keyboard-storage . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -47,7 +48,7 @@ do_build () { --platform node } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "${KEYMAN_ROOT}/web/build/${SUBPROJECT_NAME}" builder_run_action build do_build builder_run_action test test-headless "${SUBPROJECT_NAME}" diff --git a/web/src/engine/keyboard/build.sh b/web/src/engine/keyboard/build.sh index b3c5da3b3a..7260bc5cc6 100755 --- a/web/src/engine/keyboard/build.sh +++ b/web/src/engine/keyboard/build.sh @@ -12,6 +12,7 @@ SUBPROJECT_NAME=engine/keyboard . "${KEYMAN_ROOT}/web/common.inc.sh" . "${KEYMAN_ROOT}/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -34,7 +35,7 @@ builder_describe_outputs \ builder_parse "$@" function do_configure() { - verify_npm_setup + node_select_version_and_npm_ci # Configure Web browser-engine testing environments. As is, this should only # make changes when we update the dependency, even on our CI build agents. diff --git a/web/src/engine/main/build.sh b/web/src/engine/main/build.sh index accdcbf288..6cca867d88 100755 --- a/web/src/engine/main/build.sh +++ b/web/src/engine/main/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=engine/main . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -45,7 +46,7 @@ do_build () { --format esm } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf "$KEYMAN_ROOT/web/build/$SUBPROJECT_NAME" builder_run_action build do_build builder_run_action test test-headless "${SUBPROJECT_NAME}" \ No newline at end of file diff --git a/web/src/engine/osk/build.sh b/web/src/engine/osk/build.sh index bf41f7ea4e..8c82560f4e 100755 --- a/web/src/engine/osk/build.sh +++ b/web/src/engine/osk/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=engine/osk . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # ################################ Main script ################################ @@ -41,7 +42,7 @@ do_clean() { } do_configure() { - verify_npm_setup + node_select_version_and_npm_ci cp "$KEYMAN_ROOT/common/resources/fonts/keymanweb-osk.ttf" "$KEYMAN_ROOT/web/src/resources/osk/" } diff --git a/web/src/engine/osk/gesture-processor/build.sh b/web/src/engine/osk/gesture-processor/build.sh index da671105c0..53c50c3d39 100755 --- a/web/src/engine/osk/gesture-processor/build.sh +++ b/web/src/engine/osk/gesture-processor/build.sh @@ -10,6 +10,7 @@ SUBPROJECT_NAME=engine/osk/gesture-processor . "${KEYMAN_ROOT}/web/common.inc.sh" . "${KEYMAN_ROOT}/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" BUNDLE_CMD="node $KEYMAN_ROOT/web/src/tools/es-bundling/build/common-bundle.mjs" @@ -38,7 +39,7 @@ builder_parse "$@" # TODO: configure if npm has not been run, and build is specified function do_configure() { - verify_npm_setup + node_select_version_and_npm_ci } function do_build_module() { diff --git a/web/src/engine/predictive-text/templates/build.sh b/web/src/engine/predictive-text/templates/build.sh index 18544b3fa5..bc500492a1 100755 --- a/web/src/engine/predictive-text/templates/build.sh +++ b/web/src/engine/predictive-text/templates/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" ################################ Main script ################################ @@ -45,7 +46,7 @@ function do_test() { c8 mocha $FLAGS --require tests/helpers.js --recursive tests } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf build/ builder_run_action build do_build builder_run_action test do_test \ No newline at end of file diff --git a/web/src/engine/predictive-text/wordbreakers/build.sh b/web/src/engine/predictive-text/wordbreakers/build.sh index 8b81b4f0ee..31089f99c9 100755 --- a/web/src/engine/predictive-text/wordbreakers/build.sh +++ b/web/src/engine/predictive-text/wordbreakers/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" ################################ Main script ################################ @@ -28,7 +29,7 @@ builder_describe_outputs \ builder_parse "$@" function do_configure() { - verify_npm_setup + node_select_version_and_npm_ci # This is a script used to build the data.inc.ts file needed by the # default wordbreaker. We rarely update the backing data, but it diff --git a/web/src/engine/predictive-text/worker-main/build.sh b/web/src/engine/predictive-text/worker-main/build.sh index fcddbd3e47..d6ddebc697 100755 --- a/web/src/engine/predictive-text/worker-main/build.sh +++ b/web/src/engine/predictive-text/worker-main/build.sh @@ -12,6 +12,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" BUNDLE_CMD="node $KEYMAN_ROOT/web/src/tools/es-bundling/build/common-bundle.mjs" @@ -35,7 +36,7 @@ builder_describe_outputs \ builder_parse "$@" function do_configure() { - verify_npm_setup + node_select_version_and_npm_ci # Configure Web browser-engine testing environments. As is, this should only # make changes when we update the dependency, even on our CI build agents. diff --git a/web/src/engine/predictive-text/worker-main/unit_tests/test.sh b/web/src/engine/predictive-text/worker-main/unit_tests/test.sh index 7943c694a7..292f5d2442 100755 --- a/web/src/engine/predictive-text/worker-main/unit_tests/test.sh +++ b/web/src/engine/predictive-text/worker-main/unit_tests/test.sh @@ -8,6 +8,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" # This script runs from its own folder cd "$THIS_SCRIPT_PATH" @@ -29,7 +30,7 @@ builder_describe "Runs all tests for the language-modeling / predictive-text lay builder_parse "$@" if builder_start_action configure; then - verify_npm_setup + node_select_version_and_npm_ci builder_finish_action success configure fi diff --git a/web/src/engine/predictive-text/worker-thread/build.sh b/web/src/engine/predictive-text/worker-thread/build.sh index ae6d54fce1..9492d4be93 100755 --- a/web/src/engine/predictive-text/worker-thread/build.sh +++ b/web/src/engine/predictive-text/worker-thread/build.sh @@ -10,6 +10,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" WORKER_OUTPUT=build/obj @@ -41,7 +42,7 @@ builder_describe_outputs \ builder_parse "$@" function do_configure() { - verify_npm_setup + node_select_version_and_npm_ci # Configure Web browser-engine testing environments. As is, this should only # make changes when we update the dependency, even on our CI build agents. diff --git a/web/src/engine/sentry-manager/build.sh b/web/src/engine/sentry-manager/build.sh index f8b2d82f09..1054e152bc 100755 --- a/web/src/engine/sentry-manager/build.sh +++ b/web/src/engine/sentry-manager/build.sh @@ -10,6 +10,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "${KEYMAN_ROOT}/web/common.inc.sh" . "${KEYMAN_ROOT}/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" builder_describe "Builds the Sentry-reporting module used with Keyman Engine for Web" \ "@/common/web/keyman-version" \ @@ -31,7 +32,7 @@ fi ### CONFIGURE ACTIONS if builder_start_action configure; then - verify_npm_setup + node_select_version_and_npm_ci builder_finish_action success configure fi diff --git a/web/src/test/manual/embed/android-harness/build.sh b/web/src/test/manual/embed/android-harness/build.sh index 6eb1c6f380..d672fd4489 100755 --- a/web/src/test/manual/embed/android-harness/build.sh +++ b/web/src/test/manual/embed/android-harness/build.sh @@ -6,6 +6,8 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "${THIS_SCRIPT%/*}/../../../../../../resources/build/builder-full.inc.sh" ## END STANDARD BUILD SCRIPT INCLUDE +. "$KEYMAN_ROOT/resources/build/node.inc.sh" + builder_describe "Builds a debug-host page simulating Keyman Android's WebView setup for KMW use" \ "@/common/web/keyman-version" \ "@/web/src/app/webview" \ @@ -28,7 +30,7 @@ fi ### CONFIGURE ACTIONS if builder_start_action configure; then - verify_npm_setup + node_select_version_and_npm_ci builder_finish_action success configure fi diff --git a/web/src/tools/building/sourcemap-root/build.sh b/web/src/tools/building/sourcemap-root/build.sh index 8f80551ace..8e5db5e73f 100755 --- a/web/src/tools/building/sourcemap-root/build.sh +++ b/web/src/tools/building/sourcemap-root/build.sh @@ -9,6 +9,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -26,6 +27,6 @@ builder_parse "$@" ### CONFIGURE ACTIONS -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf ../../../../build/tools/building/sourcemap-root builder_run_action build tsc --build tsconfig.json \ No newline at end of file diff --git a/web/src/tools/es-bundling/build.sh b/web/src/tools/es-bundling/build.sh index ef67a5c2c1..3a05714120 100755 --- a/web/src/tools/es-bundling/build.sh +++ b/web/src/tools/es-bundling/build.sh @@ -7,6 +7,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -21,6 +22,6 @@ builder_describe_outputs \ builder_parse "$@" -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf build/ builder_run_action build tsc -b tsconfig.json diff --git a/web/src/tools/testing/bulk_rendering/build.sh b/web/src/tools/testing/bulk_rendering/build.sh index 0148ca6c61..6c93d9862c 100755 --- a/web/src/tools/testing/bulk_rendering/build.sh +++ b/web/src/tools/testing/bulk_rendering/build.sh @@ -11,6 +11,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=tools/testing/bulk_rendering . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -39,6 +40,6 @@ function do_build ( ) { "${KEYMAN_ROOT}/web/build/$SUBPROJECT_NAME/lib/zip.min.js" } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf ../../../../build/$SUBPROJECT_NAME builder_run_action build do_build \ No newline at end of file diff --git a/web/src/tools/testing/recorder-core/build.sh b/web/src/tools/testing/recorder-core/build.sh index 8edaf08319..4bd56ee2b8 100755 --- a/web/src/tools/testing/recorder-core/build.sh +++ b/web/src/tools/testing/recorder-core/build.sh @@ -11,6 +11,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" ## END STANDARD BUILD SCRIPT INCLUDE . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -29,7 +30,7 @@ builder_describe_outputs \ builder_parse "$@" if builder_start_action configure; then - verify_npm_setup + node_select_version_and_npm_ci builder_finish_action success configure fi diff --git a/web/src/tools/testing/recorder/build.sh b/web/src/tools/testing/recorder/build.sh index e109254edc..7a9b0187ec 100755 --- a/web/src/tools/testing/recorder/build.sh +++ b/web/src/tools/testing/recorder/build.sh @@ -11,6 +11,7 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" SUBPROJECT_NAME=tools/testing/recorder . "$KEYMAN_ROOT/web/common.inc.sh" . "$KEYMAN_ROOT/resources/build/utils.inc.sh" +. "$KEYMAN_ROOT/resources/build/node.inc.sh" ################################ Main script ################################ @@ -37,6 +38,6 @@ do_build ( ) { --format esm } -builder_run_action configure verify_npm_setup +builder_run_action configure node_select_version_and_npm_ci builder_run_action clean rm -rf ../../../../build/$SUBPROJECT_NAME/ builder_run_action build do_build \ No newline at end of file