mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-10 07:57:28 +00:00
Some additional items arose from this: * Adds a command-line-tests unit test which does some basic sanity tests on `kmc`. * Cleans up some of the error reporting infrastructure in `kmc` to ensure that thrown errors are handled better. * Removes redundant subshell from `builder_run_action`. Fixes: #12846
112 lines
3.8 KiB
Bash
Executable file
112 lines
3.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Compiles the developer tools, including the language model compilers.
|
|
#
|
|
## START STANDARD BUILD SCRIPT INCLUDE
|
|
# adjust relative paths as necessary
|
|
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
|
|
. "${THIS_SCRIPT%/*}/../../../resources/build/builder.inc.sh"
|
|
## END STANDARD BUILD SCRIPT INCLUDE
|
|
|
|
. "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh"
|
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
|
. "$KEYMAN_ROOT/developer/src/packages.inc.sh"
|
|
|
|
builder_describe "Build Keyman Keyboard Compiler kmc" \
|
|
"@/common/include" \
|
|
"@/common/web/keyman-version" \
|
|
"@/common/web/types" \
|
|
"@/core/include/ldml" \
|
|
"@/developer/src/common/web/utils" \
|
|
"@/developer/src/kmc-analyze" \
|
|
"@/developer/src/kmc-copy" \
|
|
"@/developer/src/kmc-generate" \
|
|
"@/developer/src/kmc-keyboard-info" \
|
|
"@/developer/src/kmc-kmn" \
|
|
"@/developer/src/kmc-ldml" \
|
|
"@/developer/src/kmc-model" \
|
|
"@/developer/src/kmc-model-info" \
|
|
"@/developer/src/kmc-package" \
|
|
"configure runs 'npm ci' on root folder" \
|
|
"build (default) builds kmc to build/" \
|
|
"clean cleans build/ folder" \
|
|
"bundle creates a bundled version of kmc" \
|
|
"api prepare compiler error documentation" \
|
|
"test run automated tests for kmc" \
|
|
publish \
|
|
"--build-path=BUILD_PATH build directory for bundle" \
|
|
"--npm-publish+ For publish, do a npm publish, not npm pack (only for CI)" \
|
|
"--dry-run,-n don't actually publish, just dry run"
|
|
|
|
builder_describe_outputs \
|
|
configure /node_modules \
|
|
build /developer/src/kmc/build/src/kmc.js
|
|
|
|
builder_parse "$@"
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------
|
|
|
|
function do_build() {
|
|
tsc --build
|
|
cp "$KEYMAN_ROOT/resources/standards-data/ldml-keyboards/unicode-license.txt" ./build/unicode-license.txt
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------
|
|
|
|
function do_test() {
|
|
builder_do_typescript_tests 50
|
|
./test/command-line-tests.sh test
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------
|
|
|
|
function do_api() {
|
|
rm -rf ./build/messages
|
|
mkdir -p ./build/messages
|
|
node . message --format markdown --out-path build/messages
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------
|
|
|
|
function do_bundle() {
|
|
SOURCEMAP_PATHS=( "${PACKAGES[@]}" )
|
|
SOURCEMAP_PATHS=( "${SOURCEMAP_PATHS[@]/%//build}" )
|
|
SOURCEMAP_PATHS=( "${SOURCEMAP_PATHS[@]/#/../../../}" )
|
|
readonly SOURCEMAP_PATHS
|
|
|
|
if ! builder_has_option --build-path; then
|
|
builder_finish_action "Parameter --build-path is required" bundle
|
|
exit 64
|
|
fi
|
|
|
|
rm -rf build/dist
|
|
|
|
mkdir -p build/dist
|
|
node build-bundler.js
|
|
|
|
sentry-cli sourcemaps inject \
|
|
--org keyman \
|
|
--project keyman-developer \
|
|
--release "$VERSION_GIT_TAG" \
|
|
build/dist/ "${SOURCEMAP_PATHS[@]}"
|
|
|
|
# Manually copy over kmcmplib module
|
|
cp ../kmc-kmn/build/src/import/kmcmplib/wasm-host.wasm build/dist/
|
|
|
|
# Manually copy over templates
|
|
cp -R ../kmc-generate/build/src/template/ build/dist/
|
|
|
|
cp -R build/dist/* "$BUILD_PATH"
|
|
|
|
builder_finish_action success bundle
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------
|
|
|
|
builder_run_action clean rm -rf ./build/ ./tsconfig.tsbuildinfo
|
|
builder_run_action configure verify_npm_setup
|
|
builder_run_action build do_build
|
|
builder_run_action test do_test
|
|
builder_run_action api do_api
|
|
builder_run_action bundle do_bundle
|
|
builder_run_action publish builder_publish_npm
|