mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 00:15:32 +00:00
feat(developer): fixup and prepare build scripts and docs for kmc
This commit is contained in:
parent
2d55546e55
commit
003f23d7b4
60 changed files with 3026 additions and 3179 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -165,6 +165,7 @@ resources/environment.sh
|
||||||
/core/VERSION.md
|
/core/VERSION.md
|
||||||
|
|
||||||
**/node_modules/
|
**/node_modules/
|
||||||
|
tsconfig.tsbuildinfo
|
||||||
|
|
||||||
# Windows system files
|
# Windows system files
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
@ -172,3 +173,8 @@ Thumbs.db
|
||||||
# Temporary file for logging scripts in xcode runs, see build-utils.sh for
|
# Temporary file for logging scripts in xcode runs, see build-utils.sh for
|
||||||
# details
|
# details
|
||||||
/xcodebuild-scripts.log
|
/xcodebuild-scripts.log
|
||||||
|
|
||||||
|
#
|
||||||
|
# Code coverage tools for JS/TS - nyc and c8
|
||||||
|
#
|
||||||
|
.nyc_output/
|
||||||
|
|
|
||||||
6
.nycrc.json
Normal file
6
.nycrc.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"check-coverage": true,
|
||||||
|
"temp-directory": ".nyc_output",
|
||||||
|
"lines": 90,
|
||||||
|
"reporter": "text"
|
||||||
|
}
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/keymanapp/keyman#readme",
|
"homepage": "https://github.com/keymanapp/keyman#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@keymanapp/lexical-model-compiler": "*",
|
"@keymanapp/kmc": "*",
|
||||||
"@keymanapp/resources-gosh": "*",
|
"@keymanapp/resources-gosh": "*",
|
||||||
"@types/node": "^11.9.4",
|
"@types/node": "^11.9.4",
|
||||||
"chai": "^4.3.4",
|
"chai": "^4.3.4",
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,8 @@ if [ $FETCH_DEPS = true ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensures that the lexical model compiler has been built locally.
|
# Ensures that the lexical model compiler has been built locally.
|
||||||
echo_heading "Preparing Lexical Model Compiler for test use"
|
echo_heading "Preparing Lexical Model Compiler (kmc-model) for test use"
|
||||||
pushd "$KEYMAN_ROOT/developer/src/kmlmc/"
|
pushd "$KEYMAN_ROOT/developer/src/kmc-model/"
|
||||||
./build.sh
|
./build.sh
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
|
|
||||||
5
common/web/keyman-version/.gitignore
vendored
5
common/web/keyman-version/.gitignore
vendored
|
|
@ -1,2 +1,5 @@
|
||||||
# version.inc.ts is generated during the build
|
# version.inc.ts is generated during the build
|
||||||
version.inc.ts
|
version.inc.ts
|
||||||
|
|
||||||
|
# keyman-version.mts (esm clone of version.inc.ts) is generated during the build
|
||||||
|
keyman-version.mts
|
||||||
|
|
@ -37,7 +37,24 @@ if builder_has_action clean; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if builder_has_action build; then
|
if builder_has_action build; then
|
||||||
# Generate index.ts
|
# Generate keyman-version.mts
|
||||||
|
echo "
|
||||||
|
// Generated by common/web/keyman-version/build.sh
|
||||||
|
export default class KEYMAN_VERSION {
|
||||||
|
static readonly VERSION = \"$VERSION\";
|
||||||
|
static readonly VERSION_RELEASE =\"$VERSION_RELEASE\";
|
||||||
|
static readonly VERSION_MAJOR = \"$VERSION_MAJOR\";
|
||||||
|
static readonly VERSION_MINOR = \"$VERSION_MINOR\";
|
||||||
|
static readonly VERSION_PATCH = \"$VERSION_PATCH\";
|
||||||
|
static readonly TIER =\"$TIER\";
|
||||||
|
static readonly VERSION_TAG = \"$VERSION_TAG\";
|
||||||
|
static readonly VERSION_WITH_TAG = \"$VERSION_WITH_TAG\";
|
||||||
|
static readonly VERSION_ENVIRONMENT = \"$VERSION_ENVIRONMENT\";
|
||||||
|
static readonly SENTRY_RELEASE = \"release-$VERSION_WITH_TAG\";
|
||||||
|
}
|
||||||
|
" > ./keyman-version.mts
|
||||||
|
|
||||||
|
# Generate version.inc.ts -- used by TypeScript code that isn't yet modular
|
||||||
echo "
|
echo "
|
||||||
// Generated by common/web/keyman-version/build.sh
|
// Generated by common/web/keyman-version/build.sh
|
||||||
namespace com.keyman {
|
namespace com.keyman {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@
|
||||||
"name": "@keymanapp/keyman-version",
|
"name": "@keymanapp/keyman-version",
|
||||||
"description": "Keyman global version data",
|
"description": "Keyman global version data",
|
||||||
"main": "./build/index.js",
|
"main": "./build/index.js",
|
||||||
"exports": "./build/index.js",
|
"exports": {
|
||||||
|
".": "./build/index.js",
|
||||||
|
"./keyman-version.mjs": "./build/keyman-version.mjs"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "echo 'Building @keymanapp/keyman-version' && tsc -b",
|
"build": "echo 'Building @keymanapp/keyman-version' && tsc -b",
|
||||||
"clean": "tsc -b --clean"
|
"clean": "tsc -b --clean"
|
||||||
|
|
|
||||||
18
common/web/keyman-version/tsconfig.esm.json
Normal file
18
common/web/keyman-version/tsconfig.esm.json
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"extends": "../../../tsconfig-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"allowJs": false,
|
||||||
|
"declaration": true,
|
||||||
|
"module": "es2020",
|
||||||
|
"outDir": "./build/",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"rootDir": ".",
|
||||||
|
"sourceMap": true,
|
||||||
|
"lib": ["es6"],
|
||||||
|
"target": "es6",
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"keyman-version.mts"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -25,7 +25,7 @@ foreach kbd : tests
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
command: kmc_cmd + ['@INPUT@', '--outFile', '@OUTPUT@'],
|
command: kmc_cmd + ['@INPUT@', '--out-file', '@OUTPUT@'],
|
||||||
output: kbd + '.kmx',
|
output: kbd + '.kmx',
|
||||||
input: kbd + '.xml'
|
input: kbd + '.xml'
|
||||||
)
|
)
|
||||||
|
|
|
||||||
6
developer/src/.gitignore
vendored
6
developer/src/.gitignore
vendored
|
|
@ -31,7 +31,6 @@ inst/setup.inf
|
||||||
inst/setup.zip
|
inst/setup.zip
|
||||||
inst/templates.wxs
|
inst/templates.wxs
|
||||||
inst/xml.wxs
|
inst/xml.wxs
|
||||||
inst/kmlmc.wxs
|
|
||||||
inst/kmc.wxs
|
inst/kmc.wxs
|
||||||
|
|
||||||
# /developer/TIKE/
|
# /developer/TIKE/
|
||||||
|
|
@ -87,7 +86,8 @@ tds_file.txt
|
||||||
# Breakpad files generated for Sentry
|
# Breakpad files generated for Sentry
|
||||||
**/*.sym
|
**/*.sym
|
||||||
|
|
||||||
|
# All kmc projects have build/ folders
|
||||||
|
kmc/build/
|
||||||
|
kmc-*/build/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,6 @@ DEVELOPER_PROGRAM=$(DEVELOPER_ROOT)\bin
|
||||||
DEVELOPER_OUTLIB=$(DEVELOPER_ROOT)\lib
|
DEVELOPER_OUTLIB=$(DEVELOPER_ROOT)\lib
|
||||||
DEVELOPER_DEBUGPATH=$(DEVELOPER_ROOT)\debug
|
DEVELOPER_DEBUGPATH=$(DEVELOPER_ROOT)\debug
|
||||||
|
|
||||||
KEYMAN_MODELCOMPILER_ROOT=$(DEVELOPER_ROOT)\src\kmlmc
|
|
||||||
KEYMAN_LDMLKEYBOARDCOMPILER_ROOT=$(DEVELOPER_ROOT)\src\kmc
|
|
||||||
|
|
||||||
|
|
||||||
DEVELOPER_DELPHIDPKPARAMS=-Q -B -GD -VT -^$C+ -^$D+ -^$J+ -^$L+ -^$O+ -^$Q- -^$R- -^$W+ -^$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win -LE$(DEVELOPER_OUTLIB) -LN$(DEVELOPER_OUTLIB) -NSData -NUobj\Win32\$(TARGET_PATH)
|
DEVELOPER_DELPHIDPKPARAMS=-Q -B -GD -VT -^$C+ -^$D+ -^$J+ -^$L+ -^$O+ -^$Q- -^$R- -^$W+ -^$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win -LE$(DEVELOPER_OUTLIB) -LN$(DEVELOPER_OUTLIB) -NSData -NUobj\Win32\$(TARGET_PATH)
|
||||||
DEVELOPER_DCC32DPK=cmd /c "$(DCC32PATH)\dcc32.exe" $(DEVELOPER_DELPHIDPKPARAMS)
|
DEVELOPER_DCC32DPK=cmd /c "$(DCC32PATH)\dcc32.exe" $(DEVELOPER_DELPHIDPKPARAMS)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
!ifdef NODELPHI
|
!ifdef NODELPHI
|
||||||
TARGETS=build-tools kmcmpdll kmanalyze kmdecomp server kmlmc kmc
|
TARGETS=build-tools kmcmpdll kmanalyze kmdecomp server kmc
|
||||||
!else
|
!else
|
||||||
TARGETS=build-tools kmcmpdll kmcomp kmanalyze kmconvert tike samples setup inst kmdecomp server kmlmc kmc
|
TARGETS=build-tools kmcmpdll kmcomp kmanalyze kmconvert tike samples setup inst kmdecomp server kmc
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
EXCLUDEPATHDEFINES=1
|
EXCLUDEPATHDEFINES=1
|
||||||
|
|
@ -65,12 +65,24 @@ server: .virtual
|
||||||
cd $(DEVELOPER_ROOT)\src\server
|
cd $(DEVELOPER_ROOT)\src\server
|
||||||
$(MAKE) $(TARGET)
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
kmlmc: .virtual
|
kmc: kmc-keyboard kmc-model kmc-model-info kmc-package
|
||||||
cd $(DEVELOPER_ROOT)\src\kmlmc
|
cd $(DEVELOPER_ROOT)\src\kmc
|
||||||
$(MAKE) $(TARGET)
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
kmc: .virtual
|
kmc-keyboard: .virtual
|
||||||
cd $(DEVELOPER_ROOT)\src\kmc
|
cd $(DEVELOPER_ROOT)\src\kmc-keyboard
|
||||||
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
|
kmc-model: .virtual
|
||||||
|
cd $(DEVELOPER_ROOT)\src\kmc-model
|
||||||
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
|
kmc-model-info: .virtual
|
||||||
|
cd $(DEVELOPER_ROOT)\src\kmc-model-info
|
||||||
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
|
kmc-package: .virtual
|
||||||
|
cd $(DEVELOPER_ROOT)\src\kmc-package
|
||||||
$(MAKE) $(TARGET)
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,10 @@ Building and signing of the installation archive keymandeveloper.msi.
|
||||||
|
|
||||||
### src/inst/node
|
### src/inst/node
|
||||||
|
|
||||||
Contains a minimal distribution of node.js intended just for compiling lexical
|
Contains a minimal distribution of node.js intended just for running kmc. If
|
||||||
models. If more dependencies are required, then the developer will be expected
|
more dependencies are required, then the developer will be expected to install
|
||||||
to install node.js themselves; this gets users going without requiring a large
|
node.js themselves; this gets users going without requiring a large installer or
|
||||||
installer or a full node.js install.
|
a full node.js install.
|
||||||
|
|
||||||
## src/kmanalyze - kmanalyze.exe
|
## src/kmanalyze - kmanalyze.exe
|
||||||
|
|
||||||
|
|
@ -66,27 +66,33 @@ Unsupported utility decompiles a Keyman .kmx keyboard. It will produce a .kmn
|
||||||
source file and optionally a .ico or .bmp image. see kmdecomp/kmdecomp.md for
|
source file and optionally a .ico or .bmp image. see kmdecomp/kmdecomp.md for
|
||||||
details.
|
details.
|
||||||
|
|
||||||
## src/kmlmc
|
## src/kmc
|
||||||
|
|
||||||
node-based compilers for lexical models
|
node-based next generation compiler, hosts kmc, kmlmi, kmlmc, kmlmp
|
||||||
|
|
||||||
### src/kmlmc/kmlmc - Lexical Model Compiler
|
### src/kmc-keyboard - LDML Keyboard Compiler
|
||||||
|
|
||||||
|
Next Generation keyboard compiler package - LDML keyboards only at present.
|
||||||
|
Command line access through kmc.
|
||||||
|
|
||||||
|
### src/kmc-model - Lexical Model Compiler
|
||||||
|
|
||||||
The Lexical Model Compiler, kmlmc, runs on nodeJS on all supported desktop
|
The Lexical Model Compiler, kmlmc, runs on nodeJS on all supported desktop
|
||||||
platforms.
|
platforms. Command line access through kmc/kmlmc.
|
||||||
|
|
||||||
### src/kmlmc/kmlmp - Package Compiler
|
### src/kmc-package - Package Compiler
|
||||||
|
|
||||||
The package compiler is broadly compatible with the kmcomp .kps package
|
The package compiler is broadly compatible with the kmcomp .kps package
|
||||||
compiler. However at this stage it is only tested with lexical models, and use
|
compiler. However at this stage it is only tested with lexical models, and use
|
||||||
with keyboards (either .js or .kmx) is not tested or supported. It is likely in
|
with keyboards (either .js or .kmx) is not tested or supported. It is likely in
|
||||||
the future that the kmcomp .kps compiler will be deprecated in favour of this
|
the future that the kmcomp .kps compiler will be deprecated in favour of this
|
||||||
one.
|
one. Command line access through kmc/kmlmp.
|
||||||
|
|
||||||
### src/kmlmc/kmlmi - Model Info Compiler
|
### src/kmc-model-info - Model Info Compiler
|
||||||
|
|
||||||
Merges .model_info files for use on the Keyman Cloud lexical model repository
|
Merges .model_info files for use on the Keyman Cloud lexical model repository at
|
||||||
at https://github.com/keymanapp/lexical-models.
|
https://github.com/keymanapp/lexical-models. Command line access through
|
||||||
|
kmc/kmlmi.
|
||||||
|
|
||||||
## src/samples
|
## src/samples
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
DEVELOPER_FILES=kmdev.wixobj xml.wixobj cef.wixobj templates.wixobj kmlmc.wixobj server.wixobj kmc.wixobj
|
DEVELOPER_FILES=kmdev.wixobj xml.wixobj cef.wixobj templates.wixobj server.wixobj kmc.wixobj
|
||||||
|
|
||||||
setup:
|
setup:
|
||||||
#
|
#
|
||||||
|
|
@ -60,7 +60,7 @@ clean:
|
||||||
-del /Q xml.wxs
|
-del /Q xml.wxs
|
||||||
-del /Q cef.wxs
|
-del /Q cef.wxs
|
||||||
-del /Q templates.wxs
|
-del /Q templates.wxs
|
||||||
-del /Q kmlmc.wxs
|
-del /Q kmc.wxs
|
||||||
|
|
||||||
test-releaseexists:
|
test-releaseexists:
|
||||||
cd $(DEVELOPER_ROOT)\src\inst
|
cd $(DEVELOPER_ROOT)\src\inst
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,7 @@ KEYMAN_WIX_TEMP_BASE=$(TEMP)\keyman_wix_build
|
||||||
KEYMAN_WIX_TEMP_XML=$(TEMP)\keyman_wix_build\xml
|
KEYMAN_WIX_TEMP_XML=$(TEMP)\keyman_wix_build\xml
|
||||||
KEYMAN_WIX_TEMP_CEF=$(TEMP)\keyman_wix_build\cef
|
KEYMAN_WIX_TEMP_CEF=$(TEMP)\keyman_wix_build\cef
|
||||||
KEYMAN_WIX_TEMP_TEMPLATES=$(TEMP)\keyman_wix_build\templates
|
KEYMAN_WIX_TEMP_TEMPLATES=$(TEMP)\keyman_wix_build\templates
|
||||||
KEYMAN_WIX_TEMP_MODELCOMPILER=$(TEMP)\keyman_wix_build\ModelCompiler
|
KEYMAN_WIX_TEMP_KMC=$(TEMP)\keyman_wix_build\kmc
|
||||||
KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER=$(TEMP)\keyman_wix_build\LDMLKeyboardCompiler
|
|
||||||
KEYMAN_WIX_TEMP_SERVER=$(TEMP)\keyman_wix_build\Server
|
KEYMAN_WIX_TEMP_SERVER=$(TEMP)\keyman_wix_build\Server
|
||||||
|
|
||||||
KEYMAN_WIX_KMDEV_SERVER=$(DEVELOPER_ROOT)\bin\server
|
KEYMAN_WIX_KMDEV_SERVER=$(DEVELOPER_ROOT)\bin\server
|
||||||
|
|
@ -31,16 +30,15 @@ copykmdev: makeinstaller make-kmcomp-install-zip
|
||||||
test-releaseexists:
|
test-releaseexists:
|
||||||
if exist $(DEVELOPER_ROOT)\release\$Version\keymandeveloper*.msi echo. & echo Release $Version already exists. Delete it or update VERSION.md and try again & exit 1
|
if exist $(DEVELOPER_ROOT)\release\$Version\keymandeveloper*.msi echo. & echo Release $Version already exists. Delete it or update VERSION.md and try again & exit 1
|
||||||
|
|
||||||
candle: heat-cef heat-xml heat-templates heat-model-compiler heat-server heat-ldml-keyboard-compiler
|
candle: heat-cef heat-xml heat-templates heat-server heat-kmc
|
||||||
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease kmdev.wxs
|
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease kmdev.wxs
|
||||||
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dXmlSourceDir=$(DEVELOPER_ROOT)\src\tike\xml xml.wxs
|
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dXmlSourceDir=$(DEVELOPER_ROOT)\src\tike\xml xml.wxs
|
||||||
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs
|
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs
|
||||||
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dTemplatesSourceDir=$(KEYMAN_DEVELOPER_TEMPLATES_ROOT) templates.wxs
|
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dTemplatesSourceDir=$(KEYMAN_DEVELOPER_TEMPLATES_ROOT) templates.wxs
|
||||||
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dModelCompilerSourceDir=$(KEYMAN_WIX_TEMP_MODELCOMPILER) kmlmc.wxs
|
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dkmcSourceDir=$(KEYMAN_WIX_TEMP_KMC) kmc.wxs
|
||||||
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dLDMLKeyboardCompilerSourceDir=$(KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER) kmc.wxs
|
|
||||||
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dServerSourceDir=$(KEYMAN_WIX_KMDEV_SERVER) server.wxs
|
$(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dServerSourceDir=$(KEYMAN_WIX_KMDEV_SERVER) server.wxs
|
||||||
|
|
||||||
clean-heat: clean-heat-model-compiler clean-heat-ldml-keyboard-compiler
|
clean-heat: clean-heat-kmc
|
||||||
|
|
||||||
heat-xml:
|
heat-xml:
|
||||||
# We copy the files to a temp folder in order to exclude thumbs.db, .vs, etc from harvesting
|
# We copy the files to a temp folder in order to exclude thumbs.db, .vs, etc from harvesting
|
||||||
|
|
@ -81,33 +79,19 @@ heat-server:
|
||||||
# When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again
|
# When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again
|
||||||
-rmdir /s/q $(KEYMAN_WIX_TEMP_SERVER)
|
-rmdir /s/q $(KEYMAN_WIX_TEMP_SERVER)
|
||||||
|
|
||||||
heat-ldml-keyboard-compiler:
|
heat-kmc:
|
||||||
cd $(KEYMAN_LDMLKEYBOARDCOMPILER_ROOT)
|
cd $(DEVELOPER_ROOT)\src\kmc
|
||||||
# Build the distributable package
|
# Build the distributable package
|
||||||
$(GIT_BASH_FOR_KEYMAN) build.sh bundle --build-path "$(KEYMAN_WIX_TEMP_BASE)"
|
$(GIT_BASH_FOR_KEYMAN) build.sh bundle --build-path "$(KEYMAN_WIX_TEMP_BASE)"
|
||||||
|
|
||||||
# Build the .wxs file
|
# Build the .wxs file
|
||||||
cd $(DEVELOPER_ROOT)\src\inst
|
cd $(DEVELOPER_ROOT)\src\inst
|
||||||
$(WIXHEAT) dir $(KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER) -o kmc.wxs -ag -cg LDMLKeyboardCompiler -dr INSTALLDIR -var var.LDMLKeyboardCompilerSourceDir -wx -nologo
|
$(WIXHEAT) dir $(KEYMAN_WIX_TEMP_KMC) -o kmc.wxs -ag -cg kmc -dr INSTALLDIR -var var.kmcSourceDir -wx -nologo
|
||||||
|
|
||||||
clean-heat-ldml-keyboard-compiler:
|
clean-heat-kmc:
|
||||||
# the production build generates files that are not in source, e.g. .ps1 scripts
|
# the production build generates files that are not in source, e.g. .ps1 scripts
|
||||||
# When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again
|
# When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again
|
||||||
-rmdir /s/q $(KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER)
|
-rmdir /s/q $(KEYMAN_WIX_TEMP_KMC)
|
||||||
|
|
||||||
heat-model-compiler:
|
|
||||||
cd $(KEYMAN_MODELCOMPILER_ROOT)
|
|
||||||
# Build the distributable package
|
|
||||||
$(GIT_BASH_FOR_KEYMAN) bundle.sh --build-path "$(KEYMAN_WIX_TEMP_BASE)"
|
|
||||||
|
|
||||||
# Build the .wxs file
|
|
||||||
cd $(DEVELOPER_ROOT)\src\inst
|
|
||||||
$(WIXHEAT) dir $(KEYMAN_WIX_TEMP_MODELCOMPILER) -o kmlmc.wxs -ag -cg ModelCompiler -dr INSTALLDIR -var var.ModelCompilerSourceDir -wx -nologo
|
|
||||||
|
|
||||||
clean-heat-model-compiler:
|
|
||||||
# the production build generates files that are not in source, e.g. .ps1 scripts
|
|
||||||
# When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again
|
|
||||||
-rmdir /s/q $(KEYMAN_WIX_TEMP_MODELCOMPILER)
|
|
||||||
|
|
||||||
makeinstaller:
|
makeinstaller:
|
||||||
cd $(DEVELOPER_ROOT)\src\inst
|
cd $(DEVELOPER_ROOT)\src\inst
|
||||||
|
|
|
||||||
|
|
@ -363,8 +363,7 @@
|
||||||
<ComponentGroupRef Id="XML" />
|
<ComponentGroupRef Id="XML" />
|
||||||
<ComponentGroupRef Id="CEF" />
|
<ComponentGroupRef Id="CEF" />
|
||||||
<ComponentGroupRef Id="Templates" />
|
<ComponentGroupRef Id="Templates" />
|
||||||
<ComponentGroupRef Id="ModelCompiler" />
|
<ComponentGroupRef Id="kmc" />
|
||||||
<ComponentGroupRef Id="LDMLKeyboardCompiler" />
|
|
||||||
<ComponentGroupRef Id="Node" />
|
<ComponentGroupRef Id="Node" />
|
||||||
<ComponentGroupRef Id="KeymanDevSentryComponents" />
|
<ComponentGroupRef Id="KeymanDevSentryComponents" />
|
||||||
<ComponentGroupRef Id="Server" />
|
<ComponentGroupRef Id="Server" />
|
||||||
|
|
|
||||||
39
developer/src/kmc-keyboard/Makefile
Normal file
39
developer/src/kmc-keyboard/Makefile
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
#
|
||||||
|
# Keyman Developer - kmc Keyboard Compiler Makefile
|
||||||
|
#
|
||||||
|
|
||||||
|
!include ..\Defines.mak
|
||||||
|
|
||||||
|
# We do configure here because parent Makefile calls this first; other
|
||||||
|
# kmc and kmc-* makefiles don't do it
|
||||||
|
build: configure .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh build
|
||||||
|
|
||||||
|
configure: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh configure
|
||||||
|
|
||||||
|
clean: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh clean
|
||||||
|
|
||||||
|
test: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh test
|
||||||
|
|
||||||
|
# build.sh bundle must be run from shell as it requires a temp folder to be
|
||||||
|
# passed in. See inst/download.in.mak for instantiation.
|
||||||
|
|
||||||
|
publish: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh publish
|
||||||
|
|
||||||
|
signcode:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
wrap-symbols:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
test-manifest:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
install:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
!include ..\Target.mak
|
||||||
83
developer/src/kmc-keyboard/build.sh
Normal file
83
developer/src/kmc-keyboard/build.sh
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Compiles the kmc keyboard compiler.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Exit on command failure and when using unset variables:
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
## START STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
# adjust relative paths as necessary
|
||||||
|
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
||||||
|
. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh"
|
||||||
|
## END STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
|
||||||
|
cd "$THIS_SCRIPT_PATH"
|
||||||
|
|
||||||
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||||
|
|
||||||
|
builder_describe "Build Keyman kmc Keyboard Compiler module" \
|
||||||
|
"configure" \
|
||||||
|
"build" \
|
||||||
|
"clean" \
|
||||||
|
"test" \
|
||||||
|
"build-fixtures builds test fixtures for manual examination" \
|
||||||
|
"publish publish to npm" \
|
||||||
|
"--dry-run,-n don't actually publish, just dry run"
|
||||||
|
|
||||||
|
builder_parse "$@"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action clean; then
|
||||||
|
rm -rf ./build/ ./tsconfig.tsbuildinfo
|
||||||
|
builder_report success clean
|
||||||
|
else
|
||||||
|
# We need the schema file at runtime and bundled, so always copy it for all actions except `clean`
|
||||||
|
mkdir -p "$THIS_SCRIPT_PATH/build/src/"
|
||||||
|
cp "$KEYMAN_ROOT/resources/standards-data/ldml-keyboards/techpreview/ldml-keyboard.schema.json" "$THIS_SCRIPT_PATH/build/src/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action configure; then
|
||||||
|
verify_npm_setup
|
||||||
|
builder_report success configure
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action build; then
|
||||||
|
npm run build
|
||||||
|
builder_report success build
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action build-fixtures; then
|
||||||
|
# Build basic.kmx and emit its checksum
|
||||||
|
mkdir -p ./build/test/fixtures
|
||||||
|
node . ./test/fixtures/basic.xml --no-compiler-version --debug --out-file ./build/test/fixtures/basic-xml.kmx
|
||||||
|
printf "${COLOR_GREY}Checksum for basic-xml.kmx: ${COLOR_PURPLE}%s${COLOR_RESET}\n" \
|
||||||
|
"$(xxd -g 1 -l 12 ./build/test/fixtures/basic-xml.kmx | cut -d' ' -f 10-13)"
|
||||||
|
|
||||||
|
# Generate a binary file from basic.txt for comparison purposes
|
||||||
|
node ../../../common/tools/hextobin/build/hextobin.js ./test/fixtures/basic.txt ./build/test/fixtures/basic-txt.kmx
|
||||||
|
|
||||||
|
builder_report success build-fixtures
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action test; then
|
||||||
|
npm test
|
||||||
|
builder_report success test
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action publish; then
|
||||||
|
. "$KEYMAN_ROOT/resources/build/npm-publish.inc.sh"
|
||||||
|
npm_publish
|
||||||
|
builder_report success publish
|
||||||
|
fi
|
||||||
54
developer/src/kmc-keyboard/package.json
Normal file
54
developer/src/kmc-keyboard/package.json
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"name": "@keymanapp/kmc-keyboard",
|
||||||
|
"description": "Keyman Developer keyboard compiler",
|
||||||
|
"keywords": [
|
||||||
|
"keyboard",
|
||||||
|
"keyman",
|
||||||
|
"ldml",
|
||||||
|
"unicode"
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./build/src/main.js"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc -b",
|
||||||
|
"test": "cd test && tsc -b && cd .. && c8 mocha",
|
||||||
|
"prepublishOnly": "npm run build"
|
||||||
|
},
|
||||||
|
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/keymanapp/keyman/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@keymanapp/keyman-version": "*",
|
||||||
|
"ajv": "^8.11.0",
|
||||||
|
"crc-32": "^1.2.2",
|
||||||
|
"restructure": "^3.0.0",
|
||||||
|
"semver": "^7.3.7",
|
||||||
|
"xml2js": "^0.4.19"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/chai": "^4.1.7",
|
||||||
|
"@types/mocha": "^5.2.7",
|
||||||
|
"@types/node": "^10.14.6",
|
||||||
|
"@types/xml2js": "^0.4.5",
|
||||||
|
"c8": "^7.12.0",
|
||||||
|
"chai": "^4.3.4",
|
||||||
|
"chalk": "^2.4.2",
|
||||||
|
"mocha": "^8.4.0",
|
||||||
|
"ts-node": "^9.1.1",
|
||||||
|
"typescript": "^4.5.4"
|
||||||
|
},
|
||||||
|
"mocha": {
|
||||||
|
"spec": "build/test/**/test-*.js",
|
||||||
|
"require": [
|
||||||
|
"source-map-support/register"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
developer/src/kmc-keyboard/test/tsconfig.json
Normal file
19
developer/src/kmc-keyboard/test/tsconfig.json
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"extends": "../../kmc/tsconfig.kmc-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"rootDir": ".",
|
||||||
|
"rootDirs": ["./", "../src/"],
|
||||||
|
"outDir": "../build/test",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"strictNullChecks": false, // TODO: get rid of this as some point
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"**/test-*.ts",
|
||||||
|
"./helpers/index.ts"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{ "path": "../../../../common/web/keyman-version/tsconfig.esm.json" },
|
||||||
|
{ "path": "../" }
|
||||||
|
]
|
||||||
|
}
|
||||||
17
developer/src/kmc-keyboard/tsconfig.json
Normal file
17
developer/src/kmc-keyboard/tsconfig.json
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"extends": "../kmc/tsconfig.kmc-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "build/src/",
|
||||||
|
"rootDir": "src/",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"allowSyntheticDefaultImports": true // for ajv
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{ "path": "../../../common/web/keyman-version/tsconfig.esm.json" },
|
||||||
|
{ "path": "../../../core/include/ldml/"}
|
||||||
|
]
|
||||||
|
}
|
||||||
38
developer/src/kmc-model-info/Makefile
Normal file
38
developer/src/kmc-model-info/Makefile
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
#
|
||||||
|
# Keyman Developer - kmc Model-Info Compiler Makefile
|
||||||
|
#
|
||||||
|
|
||||||
|
!include ..\Defines.mak
|
||||||
|
|
||||||
|
# We don't depend on configure here because kmc-keyboard does that already
|
||||||
|
build: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh build
|
||||||
|
|
||||||
|
configure: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh configure
|
||||||
|
|
||||||
|
clean: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh clean
|
||||||
|
|
||||||
|
test: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh test
|
||||||
|
|
||||||
|
# build.sh bundle must be run from shell as it requires a temp folder to be
|
||||||
|
# passed in. See inst/download.in.mak for instantiation.
|
||||||
|
|
||||||
|
publish: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh publish
|
||||||
|
|
||||||
|
signcode:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
wrap-symbols:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
test-manifest:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
install:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
!include ..\Target.mak
|
||||||
63
developer/src/kmc-model-info/build.sh
Normal file
63
developer/src/kmc-model-info/build.sh
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Compiles the kmc lexical model model-info compiler.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Exit on command failure and when using unset variables:
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
## START STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
# adjust relative paths as necessary
|
||||||
|
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
||||||
|
. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh"
|
||||||
|
## END STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
|
||||||
|
cd "$THIS_SCRIPT_PATH"
|
||||||
|
|
||||||
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||||
|
|
||||||
|
builder_describe "Build Keyman kmc Lexical Model model-info Compiler module" \
|
||||||
|
"configure" \
|
||||||
|
"build" \
|
||||||
|
"clean" \
|
||||||
|
"test" \
|
||||||
|
"publish publish to npm" \
|
||||||
|
"--dry-run,-n don't actually publish, just dry run"
|
||||||
|
|
||||||
|
builder_parse "$@"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action clean; then
|
||||||
|
rm -rf ./build/ ./tsconfig.tsbuildinfo
|
||||||
|
builder_report success clean
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action configure; then
|
||||||
|
verify_npm_setup
|
||||||
|
builder_report success configure
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action build; then
|
||||||
|
npm run build
|
||||||
|
builder_report success build
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action test; then
|
||||||
|
#npm test - no tests as yet
|
||||||
|
builder_report success test
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action publish; then
|
||||||
|
. "$KEYMAN_ROOT/resources/build/npm-publish.inc.sh"
|
||||||
|
npm_publish
|
||||||
|
builder_report success publish
|
||||||
|
fi
|
||||||
17
developer/src/kmc-model-info/tsconfig.json
Normal file
17
developer/src/kmc-model-info/tsconfig.json
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"extends": "../kmc/tsconfig.kmc-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "build/src/",
|
||||||
|
"rootDir": "src/",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{ "path": "../kmc-package" } // can we eliminate this in future?
|
||||||
|
]
|
||||||
|
}
|
||||||
38
developer/src/kmc-model/Makefile
Normal file
38
developer/src/kmc-model/Makefile
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
#
|
||||||
|
# Keyman Developer - kmc Model Compiler Makefile
|
||||||
|
#
|
||||||
|
|
||||||
|
!include ..\Defines.mak
|
||||||
|
|
||||||
|
# We don't depend on configure here because kmc-keyboard does that already
|
||||||
|
build: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh build
|
||||||
|
|
||||||
|
configure: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh configure
|
||||||
|
|
||||||
|
clean: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh clean
|
||||||
|
|
||||||
|
test: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh test
|
||||||
|
|
||||||
|
# build.sh bundle must be run from shell as it requires a temp folder to be
|
||||||
|
# passed in. See inst/download.in.mak for instantiation.
|
||||||
|
|
||||||
|
publish: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh publish
|
||||||
|
|
||||||
|
signcode:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
wrap-symbols:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
test-manifest:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
install:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
!include ..\Target.mak
|
||||||
67
developer/src/kmc-model/build.sh
Normal file
67
developer/src/kmc-model/build.sh
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Compiles the kmc lexical model compiler.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Exit on command failure and when using unset variables:
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
## START STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
# adjust relative paths as necessary
|
||||||
|
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
||||||
|
. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh"
|
||||||
|
## END STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
|
||||||
|
cd "$THIS_SCRIPT_PATH"
|
||||||
|
|
||||||
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||||
|
|
||||||
|
builder_describe "Build Keyman kmc Lexical Model Compiler module" \
|
||||||
|
"configure" \
|
||||||
|
"build" \
|
||||||
|
"clean" \
|
||||||
|
"test" \
|
||||||
|
"publish publish to npm" \
|
||||||
|
"--dry-run,-n don't actually publish, just dry run"
|
||||||
|
|
||||||
|
builder_parse "$@"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action clean; then
|
||||||
|
rm -rf ./build/ ./tsconfig.tsbuildinfo
|
||||||
|
builder_report success clean
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action configure; then
|
||||||
|
verify_npm_setup
|
||||||
|
builder_report success configure
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action build; then
|
||||||
|
# Note: build-cjs only emits lexical-model-compiler.cjs at this time, as that
|
||||||
|
# is the only file required by other non-ES modules
|
||||||
|
# (common/web/input-processor tests)
|
||||||
|
mkdir -p build/cjs-src
|
||||||
|
npm run build
|
||||||
|
builder_report success build
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action test; then
|
||||||
|
npm test
|
||||||
|
builder_report success test
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action publish; then
|
||||||
|
. "$KEYMAN_ROOT/resources/build/npm-publish.inc.sh"
|
||||||
|
npm_publish
|
||||||
|
builder_report success publish
|
||||||
|
fi
|
||||||
57
developer/src/kmc-model/package.json
Normal file
57
developer/src/kmc-model/package.json
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
"name": "@keymanapp/kmc-model",
|
||||||
|
"description": "Keyman Developer lexical model compiler",
|
||||||
|
"keywords": [
|
||||||
|
"keyboard",
|
||||||
|
"keyman",
|
||||||
|
"unicode",
|
||||||
|
"lexical-model",
|
||||||
|
"predictive-text"
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./build/src/main.js"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc -b && npm run build-cjs",
|
||||||
|
"build-cjs": "esbuild build/src/lexical-model-compiler.js --bundle --platform=node --external:./node_modules/* > build/cjs-src/lexical-model-compiler.cjs",
|
||||||
|
"test": "cd test && tsc -b && cd .. && c8 mocha",
|
||||||
|
"prepublishOnly": "npm run build"
|
||||||
|
},
|
||||||
|
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
||||||
|
"contributors": [
|
||||||
|
"Eddie Antonio Santos <Eddie.Santos@nrc-cnrc.gc.ca>",
|
||||||
|
"Joshua Horton"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/keymanapp/keyman/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@keymanapp/keyman-version": "*",
|
||||||
|
"@keymanapp/models-types": "*",
|
||||||
|
"typescript": "^4.8.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/chai": "^4.1.7",
|
||||||
|
"@types/mocha": "^5.2.7",
|
||||||
|
"@types/node": "^10.14.6",
|
||||||
|
"@types/xml2js": "^0.4.5",
|
||||||
|
"c8": "^7.12.0",
|
||||||
|
"chai": "^4.3.4",
|
||||||
|
"chalk": "^2.4.2",
|
||||||
|
"esbuild": "^0.15.7",
|
||||||
|
"mocha": "^10.0.0",
|
||||||
|
"ts-node": "^9.1.1"
|
||||||
|
},
|
||||||
|
"mocha": {
|
||||||
|
"spec": "build/test/**/test-*.js",
|
||||||
|
"require": [
|
||||||
|
"source-map-support/register"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
||||||
|
}
|
||||||
|
}
|
||||||
22
developer/src/kmc-model/test/tsconfig.json
Normal file
22
developer/src/kmc-model/test/tsconfig.json
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"extends": "../../kmc/tsconfig.kmc-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"rootDir": ".",
|
||||||
|
"rootDirs": ["./", "../src/"],
|
||||||
|
"outDir": "../build/test",
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"moduleResolution": "node16",
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"**/test-*.ts",
|
||||||
|
"*.ts",
|
||||||
|
"helpers/*.ts",
|
||||||
|
"wordbreakers/*.ts"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{ "path": "../" },
|
||||||
|
]
|
||||||
|
}
|
||||||
17
developer/src/kmc-model/tsconfig.json
Normal file
17
developer/src/kmc-model/tsconfig.json
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"extends": "../kmc/tsconfig.kmc-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "build/src/",
|
||||||
|
"rootDir": "src/",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{ "path": "../../../common/web/keyman-version/tsconfig.esm.json" },
|
||||||
|
{ "path": "../../../common/models/types" },
|
||||||
|
]
|
||||||
|
}
|
||||||
38
developer/src/kmc-package/Makefile
Normal file
38
developer/src/kmc-package/Makefile
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
#
|
||||||
|
# Keyman Developer - kmc Package Compiler Makefile
|
||||||
|
#
|
||||||
|
|
||||||
|
!include ..\Defines.mak
|
||||||
|
|
||||||
|
# We don't depend on configure here because kmc-keyboard does that already
|
||||||
|
build: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh build
|
||||||
|
|
||||||
|
configure: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh configure
|
||||||
|
|
||||||
|
clean: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh clean
|
||||||
|
|
||||||
|
test: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh test
|
||||||
|
|
||||||
|
# build.sh bundle must be run from shell as it requires a temp folder to be
|
||||||
|
# passed in. See inst/download.in.mak for instantiation.
|
||||||
|
|
||||||
|
publish: .virtual
|
||||||
|
$(GIT_BASH_FOR_KEYMAN) build.sh publish
|
||||||
|
|
||||||
|
signcode:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
wrap-symbols:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
test-manifest:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
install:
|
||||||
|
@rem nothing to do
|
||||||
|
|
||||||
|
!include ..\Target.mak
|
||||||
63
developer/src/kmc-package/build.sh
Normal file
63
developer/src/kmc-package/build.sh
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Compiles the kmc lexical model package compiler.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Exit on command failure and when using unset variables:
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
## START STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
# adjust relative paths as necessary
|
||||||
|
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
||||||
|
. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh"
|
||||||
|
## END STANDARD BUILD SCRIPT INCLUDE
|
||||||
|
|
||||||
|
cd "$THIS_SCRIPT_PATH"
|
||||||
|
|
||||||
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||||
|
|
||||||
|
builder_describe "Build Keyman kmc Package Compiler module" \
|
||||||
|
"configure" \
|
||||||
|
"build" \
|
||||||
|
"clean" \
|
||||||
|
"test" \
|
||||||
|
"publish publish to npm" \
|
||||||
|
"--dry-run,-n don't actually publish, just dry run"
|
||||||
|
|
||||||
|
builder_parse "$@"
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action clean; then
|
||||||
|
rm -rf ./build/ ./tsconfig.tsbuildinfo
|
||||||
|
builder_report success clean
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action configure; then
|
||||||
|
verify_npm_setup
|
||||||
|
builder_report success configure
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action build; then
|
||||||
|
npm run build
|
||||||
|
builder_report success build
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action test; then
|
||||||
|
npm test
|
||||||
|
builder_report success test
|
||||||
|
fi
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if builder_has_action publish; then
|
||||||
|
. "$KEYMAN_ROOT/resources/build/npm-publish.inc.sh"
|
||||||
|
npm_publish
|
||||||
|
builder_report success publish
|
||||||
|
fi
|
||||||
53
developer/src/kmc-package/package.json
Normal file
53
developer/src/kmc-package/package.json
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"name": "@keymanapp/kmc-package",
|
||||||
|
"description": "Keyman Developer package compiler",
|
||||||
|
"keywords": [
|
||||||
|
"keyboard",
|
||||||
|
"keyman",
|
||||||
|
"unicode"
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./build/src/kmp-compiler.js",
|
||||||
|
"./kmp-json-file": "./build/src/kmp-json-file.js"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc -b",
|
||||||
|
"test": "cd test && tsc -b && cd .. && mocha",
|
||||||
|
"coverage": "cd test && tsc -b && cd .. && c8 mocha",
|
||||||
|
"prepublishOnly": "npm run build"
|
||||||
|
},
|
||||||
|
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
||||||
|
"contributors": [
|
||||||
|
"Eddie Antonio Santos <Eddie.Santos@nrc-cnrc.gc.ca>",
|
||||||
|
"Joshua Horton"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/keymanapp/keyman/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"jszip": "^3.7.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/chai": "^4.1.7",
|
||||||
|
"@types/mocha": "^5.2.7",
|
||||||
|
"@types/node": "^10.14.6",
|
||||||
|
"c8": "^7.12.0",
|
||||||
|
"chai": "^4.3.4",
|
||||||
|
"chalk": "^2.4.2",
|
||||||
|
"mocha": "^8.4.0",
|
||||||
|
"ts-node": "^9.1.1",
|
||||||
|
"typescript": "^4.5.4"
|
||||||
|
},
|
||||||
|
"mocha": {
|
||||||
|
"spec": "build/test/**/test-*.js",
|
||||||
|
"require": [
|
||||||
|
"source-map-support/register"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
developer/src/kmc-package/test/tsconfig.json
Normal file
17
developer/src/kmc-package/test/tsconfig.json
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"extends": "../../kmc/tsconfig.kmc-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"rootDir": ".",
|
||||||
|
"rootDirs": ["./", "../src/"],
|
||||||
|
"outDir": "../build/test",
|
||||||
|
"baseUrl": ".",
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"**/test-*.ts",
|
||||||
|
"helpers/*.ts"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{ "path": "../" }
|
||||||
|
]
|
||||||
|
}
|
||||||
14
developer/src/kmc-package/tsconfig.json
Normal file
14
developer/src/kmc-package/tsconfig.json
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"extends": "../kmc/tsconfig.kmc-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "build/src/",
|
||||||
|
"rootDir": "src/",
|
||||||
|
"allowSyntheticDefaultImports": true, // for jszip
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
]
|
||||||
|
}
|
||||||
3
developer/src/kmc/.gitignore
vendored
3
developer/src/kmc/.gitignore
vendored
|
|
@ -1,3 +0,0 @@
|
||||||
tsconfig.tsbuildinfo
|
|
||||||
build/
|
|
||||||
.nyc_output/
|
|
||||||
12
developer/src/kmc/.npmignore
Normal file
12
developer/src/kmc/.npmignore
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Ignore files required only in development.
|
||||||
|
build.sh
|
||||||
|
bundle.inc.sh
|
||||||
|
Makefile
|
||||||
|
src/*
|
||||||
|
test/*
|
||||||
|
tools/*
|
||||||
|
tsconfig.json
|
||||||
|
tsconfig.kmc-base.json
|
||||||
|
|
||||||
|
# Ignore other unneeded build artifacts
|
||||||
|
.nyc_output/
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
#
|
#
|
||||||
# Keyman Developer - LDML Keyboard Compiler Makefile
|
# Keyman Developer - next generation compiler Makefile
|
||||||
#
|
#
|
||||||
|
|
||||||
!include ..\Defines.mak
|
!include ..\Defines.mak
|
||||||
|
|
||||||
build: configure .virtual
|
# We don't depend on configure here because kmc-keyboard does that already,
|
||||||
|
# called from parent folder Makefile
|
||||||
|
build: .virtual
|
||||||
$(GIT_BASH_FOR_KEYMAN) build.sh build
|
$(GIT_BASH_FOR_KEYMAN) build.sh build
|
||||||
|
|
||||||
configure: .virtual
|
configure: .virtual
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,36 @@
|
||||||
Keyman Developer - LDML Keyboard Compiler
|
Keyman Developer - Next Generation Compiler
|
||||||
================
|
================
|
||||||
|
|
||||||
This package provides the following Keyman **command line tool**:
|
This package provides the following Keyman **command line tools**:
|
||||||
|
|
||||||
- `kmc` — takes **LDML Keyboard .xml sources** and compiles them in to a
|
- `kmc` — takes **LDML Keyboard .xml sources** and compiles them in to a
|
||||||
KMXPlus **.kmx** file.
|
KMXPlus **.kmx** file.
|
||||||
|
- `kmlmc` — takes **lexical model sources** and compiles them in to a **.js**
|
||||||
|
file.
|
||||||
|
- `kmlmp` — uses a `.model.kmp` file to generate a redistributable **lexical
|
||||||
|
model package**.
|
||||||
|
- `kmlmi` — merges Keyman lexical model `.model_info` files.
|
||||||
|
|
||||||
|
`kmlmc` is intended to be used standalone, or as part of a build system. `kmlmp`
|
||||||
|
is used only by command line tools. `kmlmi` is used exclusively in the
|
||||||
|
[lexical-models repository][lexical models].
|
||||||
|
|
||||||
|
Note: `kmc` will in the future replace `kmlmc`, `kmlmp`, and `kmlmi`.
|
||||||
|
|
||||||
|
In order to build [lexical models][], these tools must be built and compiled.
|
||||||
|
|
||||||
|
[lexical models]: https://github.com/keymanapp/lexical-models
|
||||||
|
|
||||||
|
|
||||||
Install
|
Install
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Install `kmlmdlc` globally:
|
Install `kmc` globally:
|
||||||
|
|
||||||
npm install -g @keymanapp/ldml-keyboard-compiler
|
npm install -g @keymanapp/kmc
|
||||||
|
|
||||||
Usage
|
kmc Usage
|
||||||
-----
|
---------
|
||||||
|
|
||||||
To compile an LDML keyboard from its `.xml` source, use `kmc`:
|
To compile an LDML keyboard from its `.xml` source, use `kmc`:
|
||||||
|
|
||||||
|
|
@ -24,6 +40,19 @@ To see more command line options by using the `--help` option:
|
||||||
|
|
||||||
kmc --help
|
kmc --help
|
||||||
|
|
||||||
|
kmlmc Usage
|
||||||
|
-----------
|
||||||
|
|
||||||
|
To compile a lexical model from its `.model.ts` source, use `kmlmc`:
|
||||||
|
|
||||||
|
kmlmc my-lexical-model.model.ts --outFile my-lexical-model.js
|
||||||
|
|
||||||
|
To see more command line options by using the `--help` option:
|
||||||
|
|
||||||
|
kmlmc --help
|
||||||
|
kmlmp --help
|
||||||
|
kmlmi --help
|
||||||
|
|
||||||
How to build from source
|
How to build from source
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
|
@ -31,13 +60,18 @@ Run `build.sh`:
|
||||||
|
|
||||||
./build.sh configure build
|
./build.sh configure build
|
||||||
|
|
||||||
or
|
or (less preferably -- build.sh is more efficient):
|
||||||
|
|
||||||
nmake configure build
|
nmake configure build
|
||||||
|
|
||||||
Once you have `configure`d once, you should not normally need to do it
|
Once you have `configure`d once, you should not normally need to do it again
|
||||||
again unless dependencies change. `./build.sh` without parameters will
|
unless dependencies change or you clean the build folder. `./build.sh` without
|
||||||
do the default action, which is `build`.
|
parameters will do the default action, which is `build`.
|
||||||
|
|
||||||
|
TODO: Note that kmc currently depends on kmc-* to have been configured; while
|
||||||
|
the build of kmc will do the typescript component of the build, it will not be
|
||||||
|
able to do any other build steps, so you may wish to build each of the
|
||||||
|
components separately, one time.
|
||||||
|
|
||||||
How to run the tests
|
How to run the tests
|
||||||
--------------------
|
--------------------
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,12 @@ cd "$THIS_SCRIPT_PATH"
|
||||||
|
|
||||||
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
||||||
|
|
||||||
builder_describe "Build Keyman LDML Keyboard Compiler kmc" \
|
builder_describe "Build Keyman Keyboard Compiler kmc" \
|
||||||
"configure runs 'npm ci' on root folder" \
|
"configure runs 'npm ci' on root folder" \
|
||||||
"build (default) builds kmc to build/" \
|
"build (default) builds kmc to build/" \
|
||||||
"clean cleans build/ folder" \
|
"clean cleans build/ folder" \
|
||||||
"bundle creates a bundled version of kmc" \
|
"bundle creates a bundled version of kmc" \
|
||||||
"test run automated tests for kmc" \
|
"test run automated tests for kmc" \
|
||||||
"build-fixtures builds test fixtures for manual examination" \
|
|
||||||
"publish publish to npm" \
|
"publish publish to npm" \
|
||||||
"--build-path=BUILD_PATH build directory for bundle" \
|
"--build-path=BUILD_PATH build directory for bundle" \
|
||||||
"--dry-run,-n don't actually publish, just dry run"
|
"--dry-run,-n don't actually publish, just dry run"
|
||||||
|
|
@ -34,17 +33,17 @@ builder_parse "$@"
|
||||||
if builder_has_action clean; then
|
if builder_has_action clean; then
|
||||||
rm -rf ./build/ ./tsconfig.tsbuildinfo
|
rm -rf ./build/ ./tsconfig.tsbuildinfo
|
||||||
builder_report success clean
|
builder_report success clean
|
||||||
|
else
|
||||||
|
# We need the schema file at runtime and bundled, so always copy it for all actions except `clean`
|
||||||
|
mkdir -p "$THIS_SCRIPT_PATH/build/src/"
|
||||||
|
cp "$KEYMAN_ROOT/resources/standards-data/ldml-keyboards/techpreview/ldml-keyboard.schema.json" "$THIS_SCRIPT_PATH/build/src/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
if builder_has_action configure; then
|
if builder_has_action configure; then
|
||||||
verify_npm_setup
|
verify_npm_setup
|
||||||
|
|
||||||
# We need the schema file at runtime and bundled
|
|
||||||
mkdir -p "$THIS_SCRIPT_PATH/build/src/"
|
|
||||||
cp "$KEYMAN_ROOT/resources/standards-data/ldml-keyboards/techpreview/ldml-keyboard.schema.json" "$THIS_SCRIPT_PATH/build/src/"
|
|
||||||
|
|
||||||
builder_report success configure
|
builder_report success configure
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -57,60 +56,30 @@ fi
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
if builder_has_action build-fixtures; then
|
|
||||||
# Build basic.kmx and emit its checksum
|
|
||||||
mkdir -p ./build/test/fixtures
|
|
||||||
node . ./test/fixtures/basic.xml --no-compiler-version --debug --out-file ./build/test/fixtures/basic-xml.kmx
|
|
||||||
printf "${COLOR_GREY}Checksum for basic-xml.kmx: ${COLOR_PURPLE}%s${COLOR_RESET}\n" \
|
|
||||||
"$(xxd -g 1 -l 12 ./build/test/fixtures/basic-xml.kmx | cut -d' ' -f 10-13)"
|
|
||||||
|
|
||||||
# Generate a binary file from basic.txt for comparison purposes
|
|
||||||
node ../../../common/tools/hextobin/build/hextobin.js ./test/fixtures/basic.txt ./build/test/fixtures/basic-txt.kmx
|
|
||||||
|
|
||||||
builder_report success build-fixtures
|
|
||||||
fi
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
if builder_has_action test; then
|
if builder_has_action test; then
|
||||||
npm test
|
# npm test -- no tests as yet
|
||||||
builder_report success test
|
builder_report success test
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
if builder_has_action bundle; then
|
if builder_has_action bundle; then
|
||||||
. ./bundle.inc.sh
|
if ! builder_has_option --build-path; then
|
||||||
bundle "$BUILD_PATH"
|
builder_report "Parameter --build-path is required" bundle
|
||||||
|
exit 64
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p build/cjs-src
|
||||||
|
npm run bundle
|
||||||
|
cp build/cjs-src/* "$BUILD_PATH"
|
||||||
|
|
||||||
builder_report success bundle
|
builder_report success bundle
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
if builder_has_action publish; then
|
if builder_has_action publish; then
|
||||||
if [[ $TIER == stable ]]; then
|
. "$KEYMAN_ROOT/resources/build/npm-publish.inc.sh"
|
||||||
npm_dist_tag=latest
|
npm_publish
|
||||||
else
|
|
||||||
npm_dist_tag=$TIER
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_npm_version
|
|
||||||
|
|
||||||
if build_has_option --dry-run; then
|
|
||||||
DRY_RUN=--dry-run
|
|
||||||
else
|
|
||||||
DRY_RUN=
|
|
||||||
fi
|
|
||||||
|
|
||||||
#TEMP: we don't want to publish at this point!
|
|
||||||
DRY_RUN=--dry-run
|
|
||||||
|
|
||||||
# Note: In either case, npm publish MUST be given --access public to publish
|
|
||||||
# a package in the @keymanapp scope on the public npm package index.
|
|
||||||
#
|
|
||||||
# See `npm help publish` for more details.
|
|
||||||
echo "Publishing $DRY_RUN npm package with tag $npm_dist_tag"
|
|
||||||
npm publish $DRY_RUN --access public --tag $npm_dist_tag || fail "Could not publish $npm_dist_tag release."
|
|
||||||
|
|
||||||
builder_report success publish
|
builder_report success publish
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -1,110 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
. "$KEYMAN_ROOT/resources/build/jq.inc.sh"
|
|
||||||
|
|
||||||
bundle() {
|
|
||||||
if [[ $# -eq 0 ]]; then
|
|
||||||
echo "Parameter --build-path is required"
|
|
||||||
exit 64
|
|
||||||
fi
|
|
||||||
|
|
||||||
local BUILD_PATH="$1"
|
|
||||||
|
|
||||||
# Input may be from a Windows build script, so we'll use cygpath to translate
|
|
||||||
case $(uname) in
|
|
||||||
CYGWIN* )
|
|
||||||
BUILD_PATH=$(cygpath -u "$BUILD_PATH")
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
BUILD_PATH=$(cygpath -u "$BUILD_PATH")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
KEYMAN_WIX_TEMP_BASE="$BUILD_PATH"
|
|
||||||
KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER="$BUILD_PATH/LDMLKeyboardCompiler"
|
|
||||||
KEYMAN_LDMLKEYBOARDCOMPILER_TEMP=`mktemp -d`
|
|
||||||
|
|
||||||
echo "Temporary build path is $KEYMAN_LDMLKEYBOARDCOMPILER_TEMP"
|
|
||||||
|
|
||||||
mkdir -p "$KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER"
|
|
||||||
|
|
||||||
# We copy the built compiler into a temporary folder in order to prepare
|
|
||||||
# the node modules, as otherwise the workspace will interfere
|
|
||||||
|
|
||||||
cp -R "$KEYMAN_ROOT/developer/src/kmc/"* "$KEYMAN_LDMLKEYBOARDCOMPILER_TEMP/"
|
|
||||||
|
|
||||||
cd "$KEYMAN_LDMLKEYBOARDCOMPILER_TEMP"
|
|
||||||
|
|
||||||
# We use `npm pack` to extract only the aspects of the compiler actually
|
|
||||||
# needed for distribution. While we could use npm-bundle or similar, that adds
|
|
||||||
# extra, unwanted cruft; our approach gives us more control of the set of
|
|
||||||
# files distributed with the Keyman Developer installer.
|
|
||||||
#
|
|
||||||
# For users on other operating systems, node.js is a dependency and the
|
|
||||||
# compiler can be installed with `npm install
|
|
||||||
# @keymanapp/ldml-keyboard-compiler`.
|
|
||||||
|
|
||||||
# We copy the files to a temp folder in order to exclude thumbs.db, .vs, etc
|
|
||||||
# from harvesting
|
|
||||||
rm -rf "$KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER"
|
|
||||||
|
|
||||||
# Step 1 - npm-pack the compiler package, then unpack it in our bundling
|
|
||||||
# directory. This automatically strips the package to its barebones.
|
|
||||||
set_npm_version
|
|
||||||
npm pack
|
|
||||||
mv keymanapp-ldml-keyboard-compiler*.tgz kmc.tgz
|
|
||||||
mv kmc.tgz "$KEYMAN_WIX_TEMP_BASE"
|
|
||||||
|
|
||||||
# We extract the npm-packed version of the compiler in order to reproduce
|
|
||||||
# our needed bundle.
|
|
||||||
cd "$KEYMAN_WIX_TEMP_BASE"
|
|
||||||
tar xvzf kmc.tgz
|
|
||||||
|
|
||||||
# Creates the directory referenced by $(KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER).
|
|
||||||
mv package LDMLKeyboardCompiler
|
|
||||||
|
|
||||||
# Cleans up the npm pack artifacts, which are no longer needed.
|
|
||||||
rm kmc.tgz
|
|
||||||
|
|
||||||
# Step 2 - the compiler has one in-repo dependency that will also need to
|
|
||||||
# be packed. Managing other in-repo dependencies will be simpler; they install
|
|
||||||
# into LDMLKeyboardCompiler's extracted bundle.
|
|
||||||
|
|
||||||
mkdir -p "$KEYMAN_LDMLKEYBOARDCOMPILER_TEMP/node_modules/@keymanapp/"
|
|
||||||
cp -R "$KEYMAN_ROOT/node_modules/@keymanapp/keyman-version" "$KEYMAN_LDMLKEYBOARDCOMPILER_TEMP/node_modules/@keymanapp/"
|
|
||||||
|
|
||||||
cd "$KEYMAN_LDMLKEYBOARDCOMPILER_TEMP/node_modules/@keymanapp/keyman-version"
|
|
||||||
set_npm_version
|
|
||||||
npm pack
|
|
||||||
mv keymanapp-keyman-version*.tgz kmver.tgz
|
|
||||||
mv kmver.tgz "$KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER"
|
|
||||||
|
|
||||||
# Step 3 - install just the bare essentials by using our packed local
|
|
||||||
# dependency, followed by all external production dependencies.
|
|
||||||
cd "$KEYMAN_WIX_TEMP_LDMLKEYBOARDCOMPILER"
|
|
||||||
# package-lock.json wasn't bundled; this is needed to keep dependency versions
|
|
||||||
# consistent.
|
|
||||||
|
|
||||||
# as of npm v8.x, even though we are only working with `dependencies`,
|
|
||||||
# `devDependencies` is still checked, and as these modules are present in
|
|
||||||
# devDependencies but are only available when in the repo path, we need to
|
|
||||||
# remove them before attempting to continue.
|
|
||||||
# Yuck! ref: https://github.com/npm/cli/issues/3975#issuecomment-985305678
|
|
||||||
# ref: https://github.com/npm/cli/issues/2921
|
|
||||||
|
|
||||||
cat "$KEYMAN_LDMLKEYBOARDCOMPILER_TEMP/package.json" | "$JQ" \
|
|
||||||
'. | del(.devDependencies."@keymanapp/keyman-version")' \
|
|
||||||
> "package.json"
|
|
||||||
|
|
||||||
npm install kmver.tgz --production --no-optional
|
|
||||||
npm install --production --no-optional
|
|
||||||
|
|
||||||
# Clean up the npm pack artifacts for the dependencies.
|
|
||||||
rm -rf kmver.tgz
|
|
||||||
|
|
||||||
# We don't need the unit tests, source files, or build scripts
|
|
||||||
rm -rf test src *.sh Makefile tsconfig*
|
|
||||||
|
|
||||||
# Clean up our temporary build folder
|
|
||||||
rm -rf "$KEYMAN_LDMLKEYBOARDCOMPILER_TEMP"
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +1,62 @@
|
||||||
{
|
{
|
||||||
"name": "@keymanapp/ldml-keyboard-compiler",
|
"name": "@keymanapp/kmc",
|
||||||
"description": "Keyman Developer LDML keyboard compiler",
|
"description": "Keyman Developer compiler command line tools",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"keyboard",
|
"keyboard",
|
||||||
"keyman",
|
"keyman",
|
||||||
"ldml",
|
"ldml",
|
||||||
"unicode"
|
"unicode",
|
||||||
|
"lexical-model",
|
||||||
|
"predictive-text"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc -b",
|
"build": "tsc -b",
|
||||||
"test": "cd test && tsc -b && cd .. && nyc --check-coverage --lines 90 --reporter=text mocha",
|
"bundle": "npm run bundle-kmc && npm run bundle-kmlmc && npm run bundle-kmlmi && npm run bundle-kmlmp",
|
||||||
|
"bundle-kmc": "esbuild build/src/kmc.js --bundle --platform=node > build/cjs-src/kmc.cjs",
|
||||||
|
"bundle-kmlmc": "esbuild build/src/kmlmc.js --bundle --platform=node > build/cjs-src/kmlmc.cjs",
|
||||||
|
"bundle-kmlmi": "esbuild build/src/kmlmi.js --bundle --platform=node > build/cjs-src/kmlmi.cjs",
|
||||||
|
"bundle-kmlmp": "esbuild build/src/kmlmp.js --bundle --platform=node > build/cjs-src/kmlmp.cjs",
|
||||||
|
"test": "cd test && tsc -b && cd .. && c8 mocha",
|
||||||
"prepublishOnly": "npm run build"
|
"prepublishOnly": "npm run build"
|
||||||
},
|
},
|
||||||
|
"type": "module",
|
||||||
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
||||||
|
"contributors": [
|
||||||
|
"Eddie Antonio Santos <Eddie.Santos@nrc-cnrc.gc.ca>",
|
||||||
|
"Joshua Horton"
|
||||||
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/keymanapp/keyman/issues"
|
||||||
|
},
|
||||||
"main": "build/src/kmc.js",
|
"main": "build/src/kmc.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
"kmc": "build/src/kmc.js"
|
"kmc": "build/src/kmc.js",
|
||||||
|
"kmlmc": "build/src/kmlmc.js",
|
||||||
|
"kmlmp": "build/src/kmlmp.js",
|
||||||
|
"kmlmi": "build/src/kmlmi.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": "^8.11.0",
|
"@keymanapp/keyman-version": "*",
|
||||||
"commander": "^3.0.0",
|
"@keymanapp/kmc-keyboard": "*",
|
||||||
"crc-32": "^1.2.2",
|
"@keymanapp/kmc-model": "*",
|
||||||
"restructure": "^3.0.0",
|
"@keymanapp/kmc-model-info": "*",
|
||||||
"semver": "^7.3.7",
|
"@keymanapp/kmc-package": "*",
|
||||||
"typescript": "^4.5.4",
|
"@keymanapp/models-types": "*",
|
||||||
"xml2js": "^0.4.19"
|
"commander": "^3.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@keymanapp/keyman-version": "*",
|
|
||||||
"@types/chai": "^4.1.7",
|
"@types/chai": "^4.1.7",
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "^10.14.6",
|
"@types/node": "^10.14.6",
|
||||||
"@types/xml2js": "^0.4.5",
|
"@types/xml2js": "^0.4.5",
|
||||||
|
"c8": "^7.12.0",
|
||||||
"chai": "^4.3.4",
|
"chai": "^4.3.4",
|
||||||
"chalk": "^2.4.2",
|
"chalk": "^2.4.2",
|
||||||
|
"esbuild": "^0.15.8",
|
||||||
"mocha": "^8.4.0",
|
"mocha": "^8.4.0",
|
||||||
"nyc": "^15.1.0",
|
"ts-node": "^9.1.1",
|
||||||
"ts-node": "^9.1.1"
|
"typescript": "^4.5.4"
|
||||||
},
|
},
|
||||||
"mocha": {
|
"mocha": {
|
||||||
"spec": "build/test/**/test-*.js",
|
"spec": "build/test/**/test-*.js",
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "../../../../tsconfig-base.json",
|
|
||||||
|
|
||||||
"compilerOptions": {
|
|
||||||
"module": "commonjs",
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"noImplicitAny": true,
|
|
||||||
"sourceMap": true,
|
|
||||||
"rootDir": ".",
|
|
||||||
"rootDirs": ["./", "../src/"],
|
|
||||||
"outDir": "../build/test",
|
|
||||||
"baseUrl": ".",
|
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"**/test-*.ts",
|
|
||||||
"./helpers/index.ts"
|
|
||||||
],
|
|
||||||
"references": [
|
|
||||||
{ "path": "../../../../common/web/keyman-version" },
|
|
||||||
{ "path": "../" }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +1,25 @@
|
||||||
{
|
{
|
||||||
"extends": "../../../tsconfig-base.json",
|
"extends": "./tsconfig.kmc-base.json",
|
||||||
|
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"module": "commonjs",
|
|
||||||
"target": "es2020",
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"sourceMap": true,
|
|
||||||
"outDir": "build/src/",
|
"outDir": "build/src/",
|
||||||
"rootDir": "src/",
|
"rootDir": "src/",
|
||||||
"declaration": true,
|
"baseUrl": ".",
|
||||||
"alwaysStrict": true,
|
"paths": {
|
||||||
"noImplicitThis": true,
|
"@keymanapp/kmc-keyboard": [ "../kmc-keyboard/src/main" ],
|
||||||
"noImplicitReturns": true,
|
"@keymanapp/kmc-model": [ "../kmc-model/src/main" ],
|
||||||
"noImplicitAny": true,
|
"@keymanapp/kmc-model-info": [ "../kmc-model-info/src/model-info-compiler" ],
|
||||||
"strictBindCallApply": true,
|
"@keymanapp/kmc-package": [ "../kmc-package/src/kmp-compiler" ],
|
||||||
"strictFunctionTypes": true,
|
}
|
||||||
"noUnusedLocals": true
|
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"src/**/*.ts"
|
"src/**/*.ts"
|
||||||
],
|
],
|
||||||
"references": [
|
"references": [
|
||||||
{ "path": "../../../common/web/keyman-version" },
|
{ "path": "../../../common/web/keyman-version/tsconfig.esm.json" },
|
||||||
{ "path": "../../../core/include/ldml/"}
|
{ "path": "../kmc-keyboard" },
|
||||||
|
{ "path": "../kmc-model" },
|
||||||
|
{ "path": "../kmc-model-info" },
|
||||||
|
{ "path": "../kmc-package" },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
18
developer/src/kmc/tsconfig.kmc-base.json
Normal file
18
developer/src/kmc/tsconfig.kmc-base.json
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"extends": "../../../tsconfig-base.json",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "ES2022",
|
||||||
|
"target": "es2022",
|
||||||
|
"moduleResolution": "Node",
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"alwaysStrict": true,
|
||||||
|
"noImplicitThis": true,
|
||||||
|
"noImplicitReturns": true,
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"strictBindCallApply": true,
|
||||||
|
"strictFunctionTypes": true,
|
||||||
|
"noUnusedLocals": true
|
||||||
|
},
|
||||||
|
}
|
||||||
5
developer/src/kmlmc/.gitignore
vendored
5
developer/src/kmlmc/.gitignore
vendored
|
|
@ -1,5 +0,0 @@
|
||||||
node_modules/
|
|
||||||
dist/
|
|
||||||
dist-tests/
|
|
||||||
tsconfig.tsbuildinfo
|
|
||||||
tests/tsconfig.tsbuildinfo
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
# Ignore files required only in development.
|
|
||||||
build.sh
|
|
||||||
bundle.sh
|
|
||||||
source/*
|
|
||||||
tests/*
|
|
||||||
tsconfig.json
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
#
|
|
||||||
# Keyman Developer - Lexical Model Compiler Makefile
|
|
||||||
#
|
|
||||||
|
|
||||||
!include ..\Defines.mak
|
|
||||||
|
|
||||||
build: .virtual
|
|
||||||
$(GIT_BASH_FOR_KEYMAN) build.sh
|
|
||||||
|
|
||||||
clean: .virtual
|
|
||||||
#TODO: move to build.sh `clean` target
|
|
||||||
-rd /s/q dist
|
|
||||||
-rd /s/q dist-tests
|
|
||||||
-del tsconfig.tsbuildinfo
|
|
||||||
|
|
||||||
test: .virtual
|
|
||||||
$(GIT_BASH_FOR_KEYMAN) build.sh -tdd
|
|
||||||
|
|
||||||
signcode:
|
|
||||||
@rem nothing to do
|
|
||||||
|
|
||||||
wrap-symbols:
|
|
||||||
@rem nothing to do
|
|
||||||
|
|
||||||
test-manifest:
|
|
||||||
@rem This target needed as dependency for KMDECOMP
|
|
||||||
|
|
||||||
install:
|
|
||||||
@rem nothing to do
|
|
||||||
|
|
||||||
!include ..\Target.mak
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
Keyman Developer
|
|
||||||
================
|
|
||||||
|
|
||||||
This package provides the following Keyman **command line tools**:
|
|
||||||
|
|
||||||
- `kmlmc` — takes **lexical model sources** and compiles them in to
|
|
||||||
a **.js** file.
|
|
||||||
- `kmlmp` — uses a `.model.kmp` file to generate a redistributable
|
|
||||||
**lexical model package**.
|
|
||||||
- `kmlmi` — merges Keyman lexical model `.model_info` files.
|
|
||||||
|
|
||||||
`kmlmc` is intended to be used standalone, or as part of a build system.
|
|
||||||
`kmlmp` is used only by command line tools. `kmlmi` is used exclusively
|
|
||||||
in the [lexical-models repository][lexical models].
|
|
||||||
|
|
||||||
In order to build [lexical models][], these tools must be built and
|
|
||||||
compiled.
|
|
||||||
|
|
||||||
[lexical models]: https://github.com/keymanapp/lexical-models
|
|
||||||
|
|
||||||
|
|
||||||
Install
|
|
||||||
-------
|
|
||||||
|
|
||||||
Install `kmlmc`, `kmlmp`, and `kmlmi` globally:
|
|
||||||
|
|
||||||
npm install -g @keymanapp/lexical-model-compiler
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
To compile a lexical model from its `.model.ts` source, use `kmlmc`:
|
|
||||||
|
|
||||||
kmlmc my-lexical-model.model.ts --outFile my-lexical-model.js
|
|
||||||
|
|
||||||
To see more command line options by using the `--help` option:
|
|
||||||
|
|
||||||
kmlmc --help
|
|
||||||
kmlmp --help
|
|
||||||
kmlmi --help
|
|
||||||
|
|
||||||
How to build from source
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
Run `build.sh`:
|
|
||||||
|
|
||||||
./build.sh
|
|
||||||
|
|
||||||
|
|
||||||
How to run the tests
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
./build.sh -test
|
|
||||||
|
|
||||||
|
|
@ -1,123 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Compiles the developer tools, including the language model compilers.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Exit on command failure and when using unset variables:
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
## START STANDARD BUILD SCRIPT INCLUDE
|
|
||||||
# adjust relative paths as necessary
|
|
||||||
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
|
||||||
. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh"
|
|
||||||
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
|
||||||
## END STANDARD BUILD SCRIPT INCLUDE
|
|
||||||
EX_USAGE=64
|
|
||||||
|
|
||||||
# Where to find lexical model types.
|
|
||||||
LEXICAL_MODELS_TYPES="$KEYMAN_ROOT/common/models/types"
|
|
||||||
|
|
||||||
|
|
||||||
# Build the main script.
|
|
||||||
build () {
|
|
||||||
npm run build || fail "Could not build top-level JavaScript file."
|
|
||||||
}
|
|
||||||
|
|
||||||
display_usage ( ) {
|
|
||||||
echo "Usage: $0 [-test] [-publish-to-npm]"
|
|
||||||
echo " $0 -help"
|
|
||||||
echo
|
|
||||||
echo " -help displays this screen and exits"
|
|
||||||
echo " -test runs unit tests after building"
|
|
||||||
echo " -tdd runs unit tests WITHOUT building"
|
|
||||||
echo " -skip-package-install, -S skip package installation"
|
|
||||||
echo " -publish-to-npm publishes the current version to the npm package index"
|
|
||||||
echo " -dry-run do build, etc, but don't actually publish"
|
|
||||||
}
|
|
||||||
|
|
||||||
################################ Main script ################################
|
|
||||||
|
|
||||||
run_tests=0
|
|
||||||
install_dependencies=1
|
|
||||||
should_publish=0
|
|
||||||
npm_dist_tag=
|
|
||||||
should_dry_run=0
|
|
||||||
|
|
||||||
# Process command-line arguments
|
|
||||||
while [[ $# -gt 0 ]] ; do
|
|
||||||
key="$1"
|
|
||||||
case $key in
|
|
||||||
-help|-h)
|
|
||||||
display_usage
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
-dry-run)
|
|
||||||
should_dry_run=1
|
|
||||||
;;
|
|
||||||
-skip-package-install|-S)
|
|
||||||
install_dependencies=0
|
|
||||||
;;
|
|
||||||
-test)
|
|
||||||
run_tests=1
|
|
||||||
;;
|
|
||||||
-tdd)
|
|
||||||
run_tests=1
|
|
||||||
install_dependencies=0
|
|
||||||
;;
|
|
||||||
-version)
|
|
||||||
echo "Warning: -version is now ignored"
|
|
||||||
;;
|
|
||||||
-tier)
|
|
||||||
echo "Warning: -tier is now ignored"
|
|
||||||
;;
|
|
||||||
-publish-to-npm)
|
|
||||||
should_publish=1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "$0: invalid option: $key"
|
|
||||||
display_usage
|
|
||||||
exit $EX_USAGE
|
|
||||||
esac
|
|
||||||
shift # past the processed argument
|
|
||||||
done
|
|
||||||
|
|
||||||
# Dry run settings
|
|
||||||
if (( should_dry_run )); then
|
|
||||||
DRY_RUN=--dry-run
|
|
||||||
else
|
|
||||||
DRY_RUN=
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if Node.JS/npm is installed.
|
|
||||||
type npm >/dev/null ||\
|
|
||||||
fail "Build environment setup error detected! Please ensure Node.js is installed!"
|
|
||||||
|
|
||||||
if (( install_dependencies )) ; then
|
|
||||||
verify_npm_setup
|
|
||||||
# We need to build keyman-version and lm-worker with a script for now
|
|
||||||
"$KEYMAN_ROOT/common/web/keyman-version/build.sh" || fail "Could not build keyman-version"
|
|
||||||
fi
|
|
||||||
|
|
||||||
build || fail "Compilation failed."
|
|
||||||
echo "Typescript compilation successful."
|
|
||||||
|
|
||||||
if (( run_tests )); then
|
|
||||||
npm test || fail "Tests failed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if (( should_publish )); then
|
|
||||||
if [[ $TIER == stable ]]; then
|
|
||||||
npm_dist_tag=latest
|
|
||||||
else
|
|
||||||
npm_dist_tag=$TIER
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_npm_version
|
|
||||||
|
|
||||||
# Note: In either case, npm publish MUST be given --access public to publish
|
|
||||||
# a package in the @keymanapp scope on the public npm package index.
|
|
||||||
#
|
|
||||||
# See `npm help publish` for more details.
|
|
||||||
echo "Publishing $DRY_RUN npm package with tag $npm_dist_tag"
|
|
||||||
npm publish $DRY_RUN --access public --tag $npm_dist_tag || fail "Could not publish $npm_dist_tag release."
|
|
||||||
fi
|
|
||||||
|
|
@ -1,145 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
## START STANDARD BUILD SCRIPT INCLUDE
|
|
||||||
# adjust relative paths as necessary
|
|
||||||
THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")"
|
|
||||||
. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh"
|
|
||||||
## END STANDARD BUILD SCRIPT INCLUDE
|
|
||||||
|
|
||||||
. "$KEYMAN_ROOT/resources/build/jq.inc.sh"
|
|
||||||
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
|
||||||
|
|
||||||
display_usage() {
|
|
||||||
echo "Usage: $0 --build-path path"
|
|
||||||
echo " $0 --help"
|
|
||||||
echo
|
|
||||||
echo "This script is called from the Keyman Developer installer build"
|
|
||||||
echo "and is not intended for standalone use."
|
|
||||||
echo
|
|
||||||
echo " --help displays this screen and exits"
|
|
||||||
echo " --build-path path temporary path where archive will be built"
|
|
||||||
}
|
|
||||||
|
|
||||||
BUILD_PATH=
|
|
||||||
|
|
||||||
# Process command-line arguments
|
|
||||||
while [[ $# -gt 0 ]] ; do
|
|
||||||
key="$1"
|
|
||||||
case $key in
|
|
||||||
-help|-h)
|
|
||||||
display_usage
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
--build-path)
|
|
||||||
shift
|
|
||||||
BUILD_PATH="$1"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "$0: invalid option: $key"
|
|
||||||
display_usage
|
|
||||||
exit 64
|
|
||||||
esac
|
|
||||||
shift # past the processed argument
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ -z $BUILD_PATH ]]; then
|
|
||||||
echo "Parameter --build-path is required"
|
|
||||||
display_usage
|
|
||||||
exit 64
|
|
||||||
fi
|
|
||||||
|
|
||||||
KEYMAN_WIX_TEMP_BASE="$BUILD_PATH"
|
|
||||||
KEYMAN_WIX_TEMP_MODELCOMPILER="$BUILD_PATH/ModelCompiler"
|
|
||||||
KEYMAN_MODELCOMPILER_TEMP=`mktemp -d`
|
|
||||||
|
|
||||||
# We copy the built model compiler into a temporary folder in order to prepare
|
|
||||||
# the node modules, as otherwise the workspace will interfere
|
|
||||||
|
|
||||||
cp -R "$KEYMAN_ROOT/developer/src/kmlmc/"* "$KEYMAN_MODELCOMPILER_TEMP/"
|
|
||||||
|
|
||||||
cd "$KEYMAN_MODELCOMPILER_TEMP"
|
|
||||||
|
|
||||||
# We use `npm pack` to extract only the aspects of the model-compiler actually
|
|
||||||
# needed for distribution. While we could use npm-bundle or similar, that adds
|
|
||||||
# extra, unwanted cruft; our approach gives us more control of the set of files
|
|
||||||
# distributed with the Keyman Developer installer.
|
|
||||||
#
|
|
||||||
# For users on other operating systems, node.js is a dependency and the compiler
|
|
||||||
# can be installed with `npm install @keymanapp/lexical-model-compiler`.
|
|
||||||
|
|
||||||
# We copy the files to a temp folder in order to exclude thumbs.db, .vs, etc
|
|
||||||
# from harvesting
|
|
||||||
rm -rf "$KEYMAN_WIX_TEMP_MODELCOMPILER"
|
|
||||||
|
|
||||||
# Step 1 - npm-pack the model compiler package, then unpack it in our bundling
|
|
||||||
# directory. This automatically strips the package to its barebones.
|
|
||||||
set_npm_version
|
|
||||||
npm pack
|
|
||||||
mv keymanapp-lexical-model-compiler*.tgz kmlmc.tgz
|
|
||||||
mv kmlmc.tgz "$KEYMAN_WIX_TEMP_BASE"
|
|
||||||
|
|
||||||
# We extract the npm-packed version of the model compiler in order to reproduce
|
|
||||||
# our needed bundle.
|
|
||||||
cd "$KEYMAN_WIX_TEMP_BASE"
|
|
||||||
tar xvzf kmlmc.tgz
|
|
||||||
|
|
||||||
# Creates the directory referenced by $(KEYMAN_WIX_TEMP_MODELCOMPILER).
|
|
||||||
mv package ModelCompiler
|
|
||||||
|
|
||||||
# Cleans up the npm pack artifacts, which are no longer needed.
|
|
||||||
rm kmlmc.tgz
|
|
||||||
|
|
||||||
# Step 2 - the model compiler has one in-repo dependency that will also need to
|
|
||||||
# be packed. Managing other in-repo dependencies will be simpler; they install
|
|
||||||
# into ModelCompiler's extracted bundle.
|
|
||||||
|
|
||||||
mkdir -p "$KEYMAN_MODELCOMPILER_TEMP/node_modules/@keymanapp/"
|
|
||||||
cp -R "$KEYMAN_ROOT/node_modules/@keymanapp/models-types" "$KEYMAN_MODELCOMPILER_TEMP/node_modules/@keymanapp/"
|
|
||||||
|
|
||||||
cd "$KEYMAN_MODELCOMPILER_TEMP/node_modules/@keymanapp/models-types"
|
|
||||||
set_npm_version
|
|
||||||
npm pack
|
|
||||||
mv keymanapp-models-types*.tgz kmtypes.tgz
|
|
||||||
mv kmtypes.tgz "$KEYMAN_WIX_TEMP_MODELCOMPILER"
|
|
||||||
|
|
||||||
|
|
||||||
cp -R "$KEYMAN_ROOT/node_modules/@keymanapp/keyman-version" "$KEYMAN_MODELCOMPILER_TEMP/node_modules/@keymanapp/"
|
|
||||||
|
|
||||||
cd "$KEYMAN_MODELCOMPILER_TEMP/node_modules/@keymanapp/keyman-version"
|
|
||||||
set_npm_version
|
|
||||||
npm pack
|
|
||||||
mv keymanapp-keyman-version*.tgz kmver.tgz
|
|
||||||
mv kmver.tgz "$KEYMAN_WIX_TEMP_MODELCOMPILER"
|
|
||||||
|
|
||||||
# Step 3 - install just the bare essentials by using our packed local
|
|
||||||
# dependency, followed by all external production dependencies.
|
|
||||||
cd "$KEYMAN_WIX_TEMP_MODELCOMPILER"
|
|
||||||
# package-lock.json wasn't bundled; this is needed to keep dependency versions
|
|
||||||
# consistent.
|
|
||||||
|
|
||||||
# as of npm v8.x, even though we are only working with `dependencies`,
|
|
||||||
# `devDependencies` is still checked, and as these modules are present in
|
|
||||||
# devDependencies but are only available when in the repo path, we need to
|
|
||||||
# remove them before attempting to continue.
|
|
||||||
# Yuck! ref: https://github.com/npm/cli/issues/3975#issuecomment-985305678
|
|
||||||
# ref: https://github.com/npm/cli/issues/2921
|
|
||||||
# can't use npm uninstall because it depends on @keymanapp/models-types being
|
|
||||||
# present!
|
|
||||||
|
|
||||||
cat "$KEYMAN_MODELCOMPILER_TEMP/package.json" | "$JQ" \
|
|
||||||
'. | del(.devDependencies."@keymanapp/models-templates") | del(.devDependencies."@keymanapp/keyman-version") | del(.devDependencies."@keymanapp/models-wordbreakers")' \
|
|
||||||
> "package.json"
|
|
||||||
|
|
||||||
npm install kmtypes.tgz --production --no-optional
|
|
||||||
npm install kmver.tgz --production --no-optional
|
|
||||||
npm install --production --no-optional
|
|
||||||
|
|
||||||
# Clean up the npm pack artifacts for the dependencies.
|
|
||||||
rm kmtypes.tgz
|
|
||||||
rm kmver.tgz
|
|
||||||
|
|
||||||
# We don't need the unit tests
|
|
||||||
rm -rf "$KEYMAN_WIX_TEMP_MODELCOMPILER/tests"
|
|
||||||
rm -rf "$KEYMAN_MODELCOMPILER_TEMP"
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "../../../../tsconfig-base.json",
|
|
||||||
|
|
||||||
"compilerOptions": {
|
|
||||||
"module": "commonjs",
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"noImplicitAny": true,
|
|
||||||
"sourceMap": true,
|
|
||||||
"rootDir": "./",
|
|
||||||
"outDir": "../dist-tests/"
|
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"**/test-*.ts",
|
|
||||||
"helpers/index.ts"
|
|
||||||
],
|
|
||||||
"references": [
|
|
||||||
{ "path": "../../../../common/web/keyman-version" },
|
|
||||||
{ "path": "../../../../common/models/types" },
|
|
||||||
{ "path": "../../../../common/models/templates" },
|
|
||||||
{ "path": "../../../../common/models/wordbreakers" },
|
|
||||||
{ "path": "../"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "../../../tsconfig-base.json",
|
|
||||||
|
|
||||||
"compilerOptions": {
|
|
||||||
"module": "commonjs",
|
|
||||||
"target": "es2017",
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"sourceMap": true,
|
|
||||||
"outDir": "dist/",
|
|
||||||
"rootDir": "source/",
|
|
||||||
"declaration": true,
|
|
||||||
"alwaysStrict": true,
|
|
||||||
"noImplicitThis": true,
|
|
||||||
"noImplicitReturns": true,
|
|
||||||
"noImplicitAny": true,
|
|
||||||
"strictBindCallApply": true,
|
|
||||||
"strictFunctionTypes": true,
|
|
||||||
"noUnusedLocals": true
|
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"source/**/*.ts"
|
|
||||||
],
|
|
||||||
"references": [
|
|
||||||
{ "path": "../../../common/web/keyman-version" },
|
|
||||||
{ "path": "../../../common/models/types" },
|
|
||||||
{ "path": "../../../common/models/templates" },
|
|
||||||
{ "path": "../../../common/models/wordbreakers" },
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -23,11 +23,13 @@ developer-tests: \
|
||||||
kmcomp-x64-structures \
|
kmcomp-x64-structures \
|
||||||
kmconvert \
|
kmconvert \
|
||||||
kmx-file-languages \
|
kmx-file-languages \
|
||||||
lexical-model-compiler \
|
|
||||||
model-ts-parser \
|
model-ts-parser \
|
||||||
package-info \
|
package-info \
|
||||||
kmlmc \
|
kmc \
|
||||||
kmc
|
kmc-keyboard \
|
||||||
|
kmc-model \
|
||||||
|
kmc-model-info \
|
||||||
|
kmc-package
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -68,11 +70,6 @@ kmconvert: .virtual
|
||||||
cd $(DEVELOPER_ROOT)\src\test\auto\kmconvert
|
cd $(DEVELOPER_ROOT)\src\test\auto\kmconvert
|
||||||
$(MAKE) $(TARGET)
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
lexical-model-compiler: .virtual
|
|
||||||
# TODO: move this to a test target in kmlmc
|
|
||||||
cd $(DEVELOPER_ROOT)\src\kmlmc
|
|
||||||
$(GIT_BASH_FOR_KEYMAN) build.sh -test
|
|
||||||
|
|
||||||
model-ts-parser: .virtual
|
model-ts-parser: .virtual
|
||||||
rem TODO
|
rem TODO
|
||||||
# cd $(DEVELOPER_ROOT)\src\test\auto\model-ts-parser
|
# cd $(DEVELOPER_ROOT)\src\test\auto\model-ts-parser
|
||||||
|
|
@ -90,8 +87,20 @@ kmc: .virtual
|
||||||
cd $(DEVELOPER_ROOT)\src\kmc
|
cd $(DEVELOPER_ROOT)\src\kmc
|
||||||
$(MAKE) $(TARGET)
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
kmlmc: .virtual
|
kmc-keyboard: .virtual
|
||||||
cd $(DEVELOPER_ROOT)\src\kmlmc
|
cd $(DEVELOPER_ROOT)\src\kmc-keyboard
|
||||||
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
|
kmc-model: .virtual
|
||||||
|
cd $(DEVELOPER_ROOT)\src\kmc-model
|
||||||
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
|
kmc-model-info: .virtual
|
||||||
|
cd $(DEVELOPER_ROOT)\src\kmc-model-info
|
||||||
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
|
kmc-package: .virtual
|
||||||
|
cd $(DEVELOPER_ROOT)\src\kmc-package
|
||||||
$(MAKE) $(TARGET)
|
$(MAKE) $(TARGET)
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@ build: version.res manifest.res icons dirs xml xsd pull-core
|
||||||
$(TDS2DBG) $(WIN32_TARGET_PATH)\tike.exe
|
$(TDS2DBG) $(WIN32_TARGET_PATH)\tike.exe
|
||||||
$(COPY) $(WIN32_TARGET_PATH)\tike.exe $(DEVELOPER_PROGRAM)
|
$(COPY) $(WIN32_TARGET_PATH)\tike.exe $(DEVELOPER_PROGRAM)
|
||||||
$(COPY) kmlmc.cmd $(DEVELOPER_PROGRAM)
|
$(COPY) kmlmc.cmd $(DEVELOPER_PROGRAM)
|
||||||
|
$(COPY) kmlmi.cmd $(DEVELOPER_PROGRAM)
|
||||||
|
$(COPY) kmlmp.cmd $(DEVELOPER_PROGRAM)
|
||||||
|
$(COPY) kmc.cmd $(DEVELOPER_PROGRAM)
|
||||||
$(COPY) $(KEYMAN_ROOT)\core\build\x86\$(TARGET_PATH)\src\kmnkbp0-0.dll $(DEVELOPER_PROGRAM)
|
$(COPY) $(KEYMAN_ROOT)\core\build\x86\$(TARGET_PATH)\src\kmnkbp0-0.dll $(DEVELOPER_PROGRAM)
|
||||||
if exist $(WIN32_TARGET_PATH)\tike.dbg $(COPY) $(WIN32_TARGET_PATH)\tike.dbg $(DEVELOPER_DEBUGPATH)
|
if exist $(WIN32_TARGET_PATH)\tike.dbg $(COPY) $(WIN32_TARGET_PATH)\tike.dbg $(DEVELOPER_DEBUGPATH)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,18 @@ Currently, we're using TeamCity for this.
|
||||||
|
|
||||||
Packages are **never** published from a developer's machine.
|
Packages are **never** published from a developer's machine.
|
||||||
|
|
||||||
## List of current npm packages
|
## List of current published npm packages
|
||||||
|
|
||||||
* `@keymanapp/models-types` -- located at `common/models-types`
|
* `@keymanapp/models-types` -- located at `common/models/types`
|
||||||
* `@keymanapp/lexical-model-compiler` -- located at `developer/src/kmlmc`
|
* `@keymanapp/kmc` -- located at `developer/src/kmc`
|
||||||
|
* `@keymanapp/kmc-keyboard` -- located at `developer/src/kmc-keyboard`
|
||||||
|
* `@keymanapp/kmc-model` -- located at `developer/src/kmc-model`
|
||||||
|
* `@keymanapp/kmc-model-info` -- located at `developer/src/kmc-model-info`
|
||||||
|
* `@keymanapp/kmc-package` -- located at `developer/src/kmc-package`
|
||||||
|
|
||||||
|
### Deprecated npm packages
|
||||||
|
|
||||||
|
* `@keymanapp/lexical-model-compiler` -- replaced by `@keymanapp/kmc`
|
||||||
|
|
||||||
## For CI developers
|
## For CI developers
|
||||||
|
|
||||||
|
|
@ -23,56 +31,68 @@ server.
|
||||||
This is typically done with:
|
This is typically done with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./build.sh -test
|
./build.sh configure build test
|
||||||
```
|
```
|
||||||
|
|
||||||
Once the build succeeds and the tests pass, the version is set in
|
Once the build succeeds and the tests pass, you can publish! Use the following
|
||||||
|
script for this (**only on the CI server**!); during this, the version is set in
|
||||||
`package.json`:
|
`package.json`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./build.sh -version 12.0.${BUILD_NUMBER} -tier ${tier}
|
./build.sh publish
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can publish! Use the following script for this (again, **only on the CI server**!)
|
It is then uploaded to the npm package directory. **Ensure that the compiled
|
||||||
|
sources are included in the tarball**. For example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./build.sh -publish-to-npm -tier ${tier}
|
$ ./build.sh publish
|
||||||
```
|
npm notice
|
||||||
|
npm notice 📦 @keymanapp/kmc@16.0.61-alpha-local
|
||||||
It is then uploaded to the npm package directory. **Ensure that the
|
|
||||||
compiled sources are included in the tarball**. For example,
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ npm publish
|
|
||||||
npm notice 📦 @keymanapp/lexical-model-compiler@0.0.0
|
|
||||||
npm notice === Tarball Contents ===
|
npm notice === Tarball Contents ===
|
||||||
npm notice 12.4kB dist/lexical-model-compiler/build-trie.js
|
npm notice 841B Makefile
|
||||||
npm notice 1.2kB dist/kmlmc.js
|
npm notice 2.8kB README.md
|
||||||
npm notice 3.0kB dist/kmlmi.js
|
npm notice 2.5kB build.sh
|
||||||
npm notice 1.4kB dist/kmlmp.js
|
npm notice 116B build/src/kmc.d.ts
|
||||||
npm notice 5.0kB dist/package-compiler/kmp-compiler.js
|
npm notice 114B build/src/kmc.d.ts.map
|
||||||
npm notice 55B dist/package-compiler/kmp-json-file.js
|
npm notice 2.8kB build/src/kmc.js
|
||||||
npm notice 552B dist/package-compiler/kps-file.js
|
npm notice 2.6kB build/src/kmc.js.map
|
||||||
npm notice 4.6kB dist/lexical-model-compiler/lexical-model-compiler.js
|
npm notice 120B build/src/kmlmc.d.ts
|
||||||
npm notice 315B dist/lexical-model-compiler/lexical-model.js
|
npm notice 118B build/src/kmlmc.d.ts.map
|
||||||
npm notice 158B dist/util/min-keyman-version.js
|
npm notice 1.4kB build/src/kmlmc.js
|
||||||
npm notice 4.5kB dist/model-info-compiler/model-info-compiler.js
|
npm notice 1.4kB build/src/kmlmc.js.map
|
||||||
npm notice 57B dist/lexical-model-compiler/model-info-file.js
|
npm notice 131B build/src/kmlmi.d.ts
|
||||||
npm notice 341B dist/lexical-model-compiler/stub.js
|
npm notice 118B build/src/kmlmi.d.ts.map
|
||||||
npm notice 115B dist/util/sysexits.js
|
npm notice 3.1kB build/src/kmlmi.js
|
||||||
npm notice 2.1kB dist/util/util.js
|
npm notice 2.7kB build/src/kmlmi.js.map
|
||||||
npm notice 1.4kB package.json
|
npm notice 128B build/src/kmlmp.d.ts
|
||||||
npm notice 1.0kB README.md
|
npm notice 118B build/src/kmlmp.d.ts.map
|
||||||
|
npm notice 1.6kB build/src/kmlmp.js
|
||||||
|
npm notice 1.5kB build/src/kmlmp.js.map
|
||||||
|
npm notice 285B build/src/util/sysexits.d.ts
|
||||||
|
npm notice 186B build/src/util/sysexits.d.ts.map
|
||||||
|
npm notice 51B build/src/util/sysexits.js
|
||||||
|
npm notice 128B build/src/util/sysexits.js.map
|
||||||
|
npm notice 29.8kB build/tsconfig.tsbuildinfo
|
||||||
|
npm notice 5.4kB bundle.inc.sh
|
||||||
|
npm notice 1.7kB package.json
|
||||||
|
npm notice 2.8kB src/kmc.ts
|
||||||
|
npm notice 1.4kB src/kmlmc.ts
|
||||||
|
npm notice 3.2kB src/kmlmi.ts
|
||||||
|
npm notice 1.6kB src/kmlmp.ts
|
||||||
|
npm notice 237B src/util/sysexits.ts
|
||||||
|
npm notice 740B tsconfig.json
|
||||||
|
npm notice 449B tsconfig.kmc-base.json
|
||||||
```
|
```
|
||||||
|
|
||||||
For every release of **Keyman Developer**, the CI publishes a release of
|
For every release of **Keyman Developer**, the CI publishes a release of
|
||||||
`@keymanapp/lexical-model-compiler`. The version number is locked with
|
`@keymanapp/kmc`. The version number is locked with the particular version of
|
||||||
the particular version of Keyman Developer.
|
Keyman Developer.
|
||||||
|
|
||||||
### `set_npm_version`
|
### `set_npm_version`
|
||||||
|
|
||||||
This helper function sets the version in the `package.json` for the
|
This helper function sets the version in the `package.json` for the given
|
||||||
given package, according to the VERSION_WITH_TAG variable.
|
package, according to the VERSION_WITH_TAG variable.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
. $KEYMAN_ROOT/resources/shellHelperFunctions.sh
|
. $KEYMAN_ROOT/resources/shellHelperFunctions.sh
|
||||||
|
|
|
||||||
4345
package-lock.json
generated
4345
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -13,7 +13,10 @@
|
||||||
"resources/gosh",
|
"resources/gosh",
|
||||||
"resources/build/version",
|
"resources/build/version",
|
||||||
"core/include/ldml",
|
"core/include/ldml",
|
||||||
"developer/src/kmlmc",
|
"developer/src/kmc-keyboard",
|
||||||
|
"developer/src/kmc-model",
|
||||||
|
"developer/src/kmc-model-info",
|
||||||
|
"developer/src/kmc-package",
|
||||||
"developer/src/kmc",
|
"developer/src/kmc",
|
||||||
"developer/src/server",
|
"developer/src/server",
|
||||||
"common/models/*",
|
"common/models/*",
|
||||||
|
|
@ -23,6 +26,7 @@
|
||||||
"web"
|
"web"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@keymanapp/hextobin": "file:common/tools/hextobin"
|
"@keymanapp/hextobin": "file:common/tools/hextobin",
|
||||||
|
"@keymanapp/keyman-version": "file:common/web/keyman-version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -752,7 +752,7 @@ builder_report() {
|
||||||
target="$3"
|
target="$3"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $result == success ]; then
|
if [[ $result == success ]]; then
|
||||||
echo "${COLOR_GREEN}## $action$target completed successfully${COLOR_RESET}"
|
echo "${COLOR_GREEN}## $action$target completed successfully${COLOR_RESET}"
|
||||||
else
|
else
|
||||||
echo "${COLOR_RED}## $action$target failed. Result: $result${COLOR_RESET}"
|
echo "${COLOR_RED}## $action$target failed. Result: $result${COLOR_RESET}"
|
||||||
|
|
|
||||||
28
resources/build/npm-publish.inc.sh
Normal file
28
resources/build/npm-publish.inc.sh
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
|
||||||
|
function npm_publish() {
|
||||||
|
if [[ $TIER == stable ]]; then
|
||||||
|
npm_dist_tag=latest
|
||||||
|
else
|
||||||
|
npm_dist_tag=$TIER
|
||||||
|
fi
|
||||||
|
|
||||||
|
set_npm_version
|
||||||
|
|
||||||
|
if builder_has_option --dry-run; then
|
||||||
|
DRY_RUN=--dry-run
|
||||||
|
else
|
||||||
|
DRY_RUN=
|
||||||
|
fi
|
||||||
|
|
||||||
|
#TEMP: we don't want to publish at this point!
|
||||||
|
DRY_RUN=--dry-run
|
||||||
|
|
||||||
|
# Note: In either case, npm publish MUST be given --access public to publish
|
||||||
|
# a package in the @keymanapp scope on the public npm package index.
|
||||||
|
#
|
||||||
|
# See `npm help publish` for more details.
|
||||||
|
echo "Publishing $DRY_RUN npm package with tag $npm_dist_tag"
|
||||||
|
npm publish $DRY_RUN --access public --tag $npm_dist_tag || fail "Could not publish $npm_dist_tag release."
|
||||||
|
fi
|
||||||
|
|
@ -8,25 +8,42 @@
|
||||||
{ "path": "./common/web/recorder/src/tsconfig.json" },
|
{ "path": "./common/web/recorder/src/tsconfig.json" },
|
||||||
{ "path": "./common/web/sentry-manager/src/tsconfig.json" },
|
{ "path": "./common/web/sentry-manager/src/tsconfig.json" },
|
||||||
{ "path": "./common/web/utils/tsconfig.json" },
|
{ "path": "./common/web/utils/tsconfig.json" },
|
||||||
|
|
||||||
{ "path": "./common/models/templates/tsconfig.json" },
|
{ "path": "./common/models/templates/tsconfig.json" },
|
||||||
{ "path": "./common/models/types/tsconfig.json" },
|
{ "path": "./common/models/types/tsconfig.json" },
|
||||||
{ "path": "./common/models/wordbreakers/tsconfig.json" },
|
{ "path": "./common/models/wordbreakers/tsconfig.json" },
|
||||||
|
|
||||||
{ "path": "./common/predictive-text/browser.tsconfig.json" },
|
{ "path": "./common/predictive-text/browser.tsconfig.json" },
|
||||||
{ "path": "./common/predictive-text/testing/one-stage-embedded-webworker/tsconfig.json" },
|
{ "path": "./common/predictive-text/testing/one-stage-embedded-webworker/tsconfig.json" },
|
||||||
{ "path": "./common/predictive-text/testing/two-stage-embedded-webworker/tsconfig.json" },
|
{ "path": "./common/predictive-text/testing/two-stage-embedded-webworker/tsconfig.json" },
|
||||||
{ "path": "./common/predictive-text/testing/two-stage-embedded-webworker/worker/tsconfig.json" },
|
{ "path": "./common/predictive-text/testing/two-stage-embedded-webworker/worker/tsconfig.json" },
|
||||||
{ "path": "./common/predictive-text/tsconfig.json" },
|
{ "path": "./common/predictive-text/tsconfig.json" },
|
||||||
{ "path": "./developer/src/kmlmc/tests/tsconfig.json" },
|
|
||||||
{ "path": "./developer/src/kmlmc/tsconfig.json" },
|
//{ "path": "./developer/src/kmc/test/tsconfig.json" },
|
||||||
|
{ "path": "./developer/src/kmc/tsconfig.json" },
|
||||||
|
|
||||||
|
{ "path": "./developer/src/kmc-keyboard/test/tsconfig.json" },
|
||||||
|
{ "path": "./developer/src/kmc-keyboard/tsconfig.json" },
|
||||||
|
{ "path": "./developer/src/kmc-model/test/tsconfig.json" },
|
||||||
|
{ "path": "./developer/src/kmc-model/tsconfig.json" },
|
||||||
|
//{ "path": "./developer/src/kmc-model-info/test/tsconfig.json" },
|
||||||
|
{ "path": "./developer/src/kmc-model-info/tsconfig.json" },
|
||||||
|
{ "path": "./developer/src/kmc-package/test/tsconfig.json" },
|
||||||
|
{ "path": "./developer/src/kmc-package/tsconfig.json" },
|
||||||
|
|
||||||
{ "path": "./developer/src/server/tsconfig.json" },
|
{ "path": "./developer/src/server/tsconfig.json" },
|
||||||
|
|
||||||
{ "path": "./resources/build/version/tsconfig.json" },
|
{ "path": "./resources/build/version/tsconfig.json" },
|
||||||
{ "path": "./resources/build/version/tsconfig.production.json" },
|
{ "path": "./resources/build/version/tsconfig.production.json" },
|
||||||
|
|
||||||
{ "path": "./web/bulk_rendering/tsconfig.json" },
|
{ "path": "./web/bulk_rendering/tsconfig.json" },
|
||||||
{ "path": "./web/source/tsconfig.json" },
|
{ "path": "./web/source/tsconfig.json" },
|
||||||
{ "path": "./web/tools/recorder/tsconfig.json" },
|
{ "path": "./web/tools/recorder/tsconfig.json" },
|
||||||
{ "path": "./web/tools/sourcemap-root/tsconfig.json" },
|
{ "path": "./web/tools/sourcemap-root/tsconfig.json" },
|
||||||
|
|
||||||
{ "path": "./common/web/lm-message-types/" },
|
{ "path": "./common/web/lm-message-types/" },
|
||||||
{ "path": "./common/web/lm-worker/" },
|
{ "path": "./common/web/lm-worker/" },
|
||||||
{ "path": "./common/web/keyman-version/" },
|
{ "path": "./common/web/keyman-version/" },
|
||||||
|
{ "path": "./common/web/keyman-version/tsconfig.esm.json" },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Loading…
Add table
Reference in a new issue