mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-09 15:37:28 +00:00
89 lines
No EOL
2.9 KiB
Bash
Executable file
89 lines
No EOL
2.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
## START STANDARD BUILD SCRIPT INCLUDE
|
|
# adjust relative paths as necessary
|
|
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
|
|
. "${THIS_SCRIPT%/*}/../../../resources/build/builder-full.inc.sh"
|
|
## END STANDARD BUILD SCRIPT INCLUDE
|
|
|
|
# Imports common Web build-script definitions & functions
|
|
|
|
. "$KEYMAN_ROOT/resources/build/utils.inc.sh"
|
|
. "$KEYMAN_ROOT/resources/build/node.inc.sh"
|
|
. "$KEYMAN_ROOT/web/common.inc.sh"
|
|
|
|
# ################################ Main script ################################
|
|
|
|
# dependency on kmc required for tests
|
|
builder_describe "Builds Keyman Engine for Web (KMW)" \
|
|
"@/core:wasm build" \
|
|
"@/common/tools/es-bundling build" \
|
|
"@/developer/src/kmc build" \
|
|
"@/web/src/common/web-utils build" \
|
|
"clean" \
|
|
"configure" \
|
|
"build" \
|
|
"test" \
|
|
":predictive-text"
|
|
|
|
# Possible TODO?
|
|
# "upload-symbols Uploads build product to Sentry for error report symbolification. Only defined for $DOC_BUILD_EMBED_WEB" \
|
|
|
|
builder_describe_outputs \
|
|
configure /node_modules \
|
|
build /web/build/engine/lib/index.mjs
|
|
|
|
builder_parse "$@"
|
|
|
|
#### Build action definitions ####
|
|
|
|
copy_deps() {
|
|
cp "${KEYMAN_ROOT}/common/resources/fonts/keymanweb-osk.ttf" "${KEYMAN_ROOT}/web/src/resources/osk/"
|
|
}
|
|
|
|
do_build () {
|
|
# eslint .
|
|
|
|
copy_deps
|
|
|
|
tsc -b .
|
|
|
|
# So... tsc does declaration-bundling on its own pretty well, at least for local development.
|
|
tsc --emitDeclarationOnly --outFile "${KEYMAN_ROOT}/web/build/engine/lib/index.d.ts" -p "."
|
|
|
|
node_es_bundle "${KEYMAN_ROOT}/web/build/engine/obj/index.js" \
|
|
--out "${KEYMAN_ROOT}/web/build/engine/lib/index.mjs" \
|
|
--format esm
|
|
|
|
# TODO-web-core: should this be in test/?
|
|
echo "Validating gesture model and set references"
|
|
node src/osk/validate-gesture-specs.js
|
|
}
|
|
|
|
run_tests() {
|
|
# Run javascript tests
|
|
#
|
|
# Trying to run languageProcessor.tests.js with c8 coverage fails with:
|
|
# "TypeError [ERR_INVALID_URL_SCHEME]: The URL must be of scheme file"
|
|
# when c8 tries to create a report from the raw coverage data. The reason
|
|
# is a URL starting with `data:text/javascript` coming from
|
|
# `web/src/engine/predictive-text/worker-main/src/node/mappedWorker.ts`.
|
|
#
|
|
# So we first run all javascript tests except languageProcessor.tests.js
|
|
# with coverage, and then in a second step run languageProcessor.tests.js
|
|
# without coverage.
|
|
test-headless-typescript engine "" "--exclude" "**/languageProcessor.tests.js"
|
|
SKIP_C8=1 test-headless-typescript "engine/main/languageProcessor.tests.js"
|
|
|
|
# # Run typescript tests
|
|
# test-headless-typescript engine
|
|
}
|
|
|
|
builder_run_action clean rm -rf "${KEYMAN_ROOT}/web/build/engine"
|
|
builder_run_child_actions clean
|
|
builder_run_action configure node_select_version_and_npm_ci
|
|
builder_run_child_actions configure
|
|
builder_run_child_actions build
|
|
builder_run_action build do_build
|
|
builder_run_action test run_tests
|
|
builder_run_child_actions test |