diff --git a/developer/docs/help/context/index.md b/developer/docs/help/context/index.md
index 04028b35c1..d7bf164c30 100644
--- a/developer/docs/help/context/index.md
+++ b/developer/docs/help/context/index.md
@@ -42,12 +42,6 @@ title: Context Help
[kmc Command-line Options](kmc)
-[kmlmc Command-line Options](kmlmc)
-
-[kmlmi Command-line Options](kmlmi)
-
-[kmlmp Command-line Options](kmlmp)
-
[Character Map](character-map)
[Message Window](messages)
diff --git a/developer/docs/help/context/kmlmc.md b/developer/docs/help/context/kmlmc.md
deleted file mode 100644
index 33edf500f5..0000000000
--- a/developer/docs/help/context/kmlmc.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: kmlmc - Command Line Lexical Model Compiler (deprecated)
----
-
-kmlmc has been replaced by [kmc](../reference/kmc).
diff --git a/developer/docs/help/context/kmlmi.md b/developer/docs/help/context/kmlmi.md
deleted file mode 100644
index dc47cbbc39..0000000000
--- a/developer/docs/help/context/kmlmi.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: kmlmi - Command Line Lexical Model model_info Compiler (deprecated)
----
-
-kmlmi has been replaced by [kmc](../reference/kmc).
diff --git a/developer/docs/help/context/kmlmp.md b/developer/docs/help/context/kmlmp.md
deleted file mode 100644
index 3442d8f142..0000000000
--- a/developer/docs/help/context/kmlmp.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: kmlmp - Command Line Lexical Model Package Compiler (deprecated)
----
-
-kmlmp has been replaced by [kmc](../reference/kmc).
diff --git a/developer/docs/help/reference/kmc/cli/kmcomp-migration.md b/developer/docs/help/reference/kmc/cli/kmcomp-migration.md
index c864e1bc90..e3cd9f28b7 100644
--- a/developer/docs/help/reference/kmc/cli/kmcomp-migration.md
+++ b/developer/docs/help/reference/kmc/cli/kmcomp-migration.md
@@ -5,9 +5,8 @@ title: Migrating from kmcomp to kmc
`kmcomp` was the command-line compiler for Keyman Developer through version
16.0. Version 17.0 replaces `kmcomp` with `kmc`.
-The lexical model command-line tooling, `kmlmc`, `kmlmp`, and `kmlmi`, are all
-still present in version 17, but are deprecated, as the same tasks can be
-performed with `kmc`.
+The lexical model command-line tooling, `kmlmc`, `kmlmp`, and `kmlmi`, have
+been removed in version 19.0; instead use `kmc`.
## Benefits
@@ -99,21 +98,6 @@ kmcomp | kmc | notes
## Compiling a lexical model
-`kmlmc` and `kmlmp` were separate tools in earlier versions of Keyman Developer,
-for compiling lexical models and lexical model packages. They have both been
-replaced with `kmc`.
-
-Old method, using kmlmc and kmlmp:
-
-```bash
-kmlmc file.model.ts
-# or specifying output filename
-kmlmc -o output/path/file.model.js file.model.ts
-kmlmp file.model.kps
-```
-
-New method, using kmc:
-
```bash
# recommended, build the model project:
kmc build .
diff --git a/developer/src/README.md b/developer/src/README.md
index f3419c71dc..f9b9092448 100644
--- a/developer/src/README.md
+++ b/developer/src/README.md
@@ -84,7 +84,7 @@ in Keyman for Windows.
## kmc
-node-based next generation compiler, hosts kmc, (and legacy kmlmc, kmlmp)
+node-based next generation compiler, hosts kmc
### kmc-analyze - Analysis tools
diff --git a/developer/src/inst/kmdev.wxs b/developer/src/inst/kmdev.wxs
index c57de43d82..8b10c138c7 100644
--- a/developer/src/inst/kmdev.wxs
+++ b/developer/src/inst/kmdev.wxs
@@ -262,14 +262,6 @@
-
-
-
-
-
-
-
-
diff --git a/developer/src/inst/node/kmlmc.cmd b/developer/src/inst/node/kmlmc.cmd
deleted file mode 100644
index be3bdf06e0..0000000000
--- a/developer/src/inst/node/kmlmc.cmd
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem This script avoids path dependencies for node for distribution
-@rem with Keyman Developer. When used on platforms other than Windows,
-@rem node can be used directly with the compiler (`npm link` will setup).
-@"%~dp0\node.js\node.exe" "%~dp0\kmc\kmlmc.mjs" %*
diff --git a/developer/src/inst/node/kmlmp.cmd b/developer/src/inst/node/kmlmp.cmd
deleted file mode 100644
index 2062ae091c..0000000000
--- a/developer/src/inst/node/kmlmp.cmd
+++ /dev/null
@@ -1,4 +0,0 @@
-@rem This script avoids path dependencies for node for distribution
-@rem with Keyman Developer. When used on platforms other than Windows,
-@rem node can be used directly with the compiler (`npm link` will setup).
-@"%~dp0\node.js\node.exe" "%~dp0\kmc\kmlmp.mjs" %*
diff --git a/developer/src/kmc/build-bundler.js b/developer/src/kmc/build-bundler.js
index 9b5f9cdd9b..1cfbe2568f 100644
--- a/developer/src/kmc/build-bundler.js
+++ b/developer/src/kmc/build-bundler.js
@@ -7,8 +7,6 @@ import esbuild from 'esbuild';
await esbuild.build({
entryPoints: [
'build/src/kmc.js',
- 'build/src/kmlmc.js',
- 'build/src/kmlmp.js',
],
bundle: true,
format: 'esm',
diff --git a/developer/src/kmc/package.json b/developer/src/kmc/package.json
index 069e676ed1..39d839bc84 100644
--- a/developer/src/kmc/package.json
+++ b/developer/src/kmc/package.json
@@ -11,10 +11,8 @@
],
"scripts": {
"build": "tsc -b",
- "bundle": "npm run bundle-kmc && npm run bundle-kmlmc && npm run bundle-kmlmp",
+ "bundle": "npm run bundle-kmc",
"bundle-kmc": "esbuild build/src/kmc.js --bundle --platform=node --target=es2022 > build/cjs-src/kmc.cjs",
- "bundle-kmlmc": "esbuild build/src/kmlmc.js --bundle --platform=node --target=es2022 > build/cjs-src/kmlmc.cjs",
- "bundle-kmlmp": "esbuild build/src/kmlmp.js --bundle --platform=node --target=es2022 > build/cjs-src/kmlmp.cjs",
"test": "eslint . && cd test && tsc -b && cd .. && mocha"
},
"type": "module",
@@ -29,9 +27,7 @@
},
"main": "build/src/kmc.js",
"bin": {
- "kmc": "build/src/kmc.js",
- "kmlmc": "build/src/kmlmc.js",
- "kmlmp": "build/src/kmlmp.js"
+ "kmc": "build/src/kmc.js"
},
"dependencies": {
"@keymanapp/common-types": "*",
diff --git a/developer/src/kmc/src/kmlmc.ts b/developer/src/kmc/src/kmlmc.ts
deleted file mode 100644
index ca2fd4d6b0..0000000000
--- a/developer/src/kmc/src/kmlmc.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env node
-/**
- * kmlmc - Keyman Lexical Model Compiler
- */
-
-import { Command } from 'commander';
-import { LexicalModelCompiler } from '@keymanapp/kmc-model';
-import { SysExits } from './util/sysexits.js';
-import KEYMAN_VERSION from "@keymanapp/keyman-version";
-import { NodeCompilerCallbacks } from './util/NodeCompilerCallbacks.js';
-
-let inputFilename: string;
-const program = new Command();
-
-/* Arguments */
-program
- .description('Compiles Keyman lexical models')
- .version(KEYMAN_VERSION.VERSION_WITH_TAG)
- .arguments('')
- .action(infile => inputFilename = infile)
- .option('-o, --outFile ', 'where to save the resultant file');
-
-program.parse(process.argv);
-
-// Deal with input arguments:
-if (!inputFilename) {
- exitDueToUsageError('Must provide a lexical model source file.');
-}
-
-const callbacks = new NodeCompilerCallbacks({logLevel: 'info'});
-
-const compiler = new LexicalModelCompiler();
-if(!await compiler.init(callbacks, null)) {
- console.error('Initialization failed.');
- process.exit(SysExits.EX_DATAERR);
-}
-
-let code = null;
-// Compile:
-try {
- code = await compiler.run(inputFilename, program.opts().outFile);
-} catch(e) {
- console.error(e);
- process.exit(SysExits.EX_DATAERR);
-}
-
-if(!code) {
- console.error('Compilation failed.')
- process.exit(SysExits.EX_DATAERR);
-}
-
-// Output:
-if (program.opts().outFile) {
- compiler.write(code.artifacts);
-} else {
- // TODO(lowpri): if writing to console then log messages should all be to stderr?
- const decoder = new TextDecoder();
- const text = decoder.decode(code.artifacts.js.data);
- console.log(text);
-}
-
-function exitDueToUsageError(message: string): never {
- console.error(`${program.name()}: ${message}`);
- console.error();
- program.outputHelp();
- return process.exit(SysExits.EX_USAGE);
-}
\ No newline at end of file
diff --git a/developer/src/kmc/src/kmlmp.ts b/developer/src/kmc/src/kmlmp.ts
deleted file mode 100644
index d5fdb20c16..0000000000
--- a/developer/src/kmc/src/kmlmp.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env node
-/**
- * kmlmp - Keyman Lexical Model Package Compiler
- */
-
-// Note: this is a deprecated package and will be removed in Keyman 19.0
-
-import { Command } from 'commander';
-import { KmpCompiler } from '@keymanapp/kmc-package';
-import { SysExits } from './util/sysexits.js';
-import KEYMAN_VERSION from "@keymanapp/keyman-version";
-import { NodeCompilerCallbacks } from './util/NodeCompilerCallbacks.js';
-
-let inputFilename: string;
-const program = new Command();
-
-/* Arguments */
-program
- .description('Compiles Keyman lexical model packages\nDeprecated: use instead; will be removed in v18')
- .version(KEYMAN_VERSION.VERSION_WITH_TAG)
- .arguments('')
- .action(infile => inputFilename = infile)
- .option('-o, --outFile ', 'where to save the resultant file');
-
-program.parse(process.argv);
-
-// Deal with input arguments:
-
-if (!inputFilename) {
- exitDueToUsageError('Must provide a lexical model package source file.');
-}
-
-const outputFilename: string = program.opts().outFile ? program.opts().outFile : inputFilename.replace(/\.kps$/, ".kmp");
-
-//
-// Run the compiler
-//
-
-const callbacks = new NodeCompilerCallbacks({logLevel: 'info'});
-const kmpCompiler = new KmpCompiler();
-if(!await kmpCompiler.init(callbacks, null)) {
- process.exit(1);
-}
-
-const result = await kmpCompiler.run(inputFilename, outputFilename);
-if(!result) {
- process.exit(1);
-}
-
-if(!await kmpCompiler.write(result.artifacts)) {
- console.error('Failed to write kmp file');
- process.exit(1);
-}
-
-function exitDueToUsageError(message: string): never {
- console.error(`${program.name()}: ${message}`);
- console.error();
- program.outputHelp();
- return process.exit(SysExits.EX_USAGE);
-}
diff --git a/developer/src/tike/build.sh b/developer/src/tike/build.sh
index b9e5349f3e..15e2add3c4 100755
--- a/developer/src/tike/build.sh
+++ b/developer/src/tike/build.sh
@@ -72,8 +72,6 @@ function do_build() {
tds2dbg "$WIN32_TARGET"
cp "$WIN32_TARGET" "$DEVELOPER_PROGRAM"
- cp kmlmc.cmd "$DEVELOPER_PROGRAM"
- cp kmlmp.cmd "$DEVELOPER_PROGRAM"
cp kmc.cmd "$DEVELOPER_PROGRAM"
cp "$KEYMAN_ROOT/core/build/x86/$TARGET_PATH/src/$KEYMANCORE_DLL" "$DEVELOPER_PROGRAM"
builder_if_release_build_level cp "$WIN32_TARGET_PATH/tike.dbg" "$DEVELOPER_DEBUGPATH"
diff --git a/developer/src/tike/kmlmc.cmd b/developer/src/tike/kmlmc.cmd
deleted file mode 100644
index 4f86f2e3bd..0000000000
--- a/developer/src/tike/kmlmc.cmd
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-setlocal
-rem This script is based on /developer/src/node/inst/kmlmc.cmd. It is stored here
-rem in order to allow TIKE to call out to the compiler while debugging.
-if exist "%~dp0..\inst\node\dist\node.exe" (
- rem If running in developer/src/tike/:
- set nodeexe="%~dp0..\inst\node\dist\node.exe"
- set nodecli="%~dp0..\kmc\build\src\kmlmc.js"
-) else if exist "%~dp0..\src\inst\node\dist\node.exe" (
- rem If running in developer/bin/:
- set nodeexe="%~dp0..\src\inst\node\dist\node.exe"
- set nodecli="%~dp0..\src\kmc\build\src\kmlmc.js"
-) else (
- rem Cannot find node or kmlmc.js relative to execution path
- echo Error: node.exe or kmlmc.js not found.
- exit /b 1
-)
-
-%nodeexe% --enable-source-maps %nodecli% %*
-exit /b %errorlevel%
diff --git a/developer/src/tike/kmlmp.cmd b/developer/src/tike/kmlmp.cmd
deleted file mode 100644
index 716a5bf940..0000000000
--- a/developer/src/tike/kmlmp.cmd
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-setlocal
-rem This script is based on /developer/src/node/inst/kmlmp.cmd. It is stored here
-rem in order to allow TIKE to call out to the compiler while debugging.
-if exist "%~dp0..\inst\node\dist\node.exe" (
- rem If running in developer/src/tike/:
- set nodeexe="%~dp0..\inst\node\dist\node.exe"
- set nodecli="%~dp0..\kmc\build\src\kmlmp.js"
-) else if exist "%~dp0..\src\inst\node\dist\node.exe" (
- rem If running in developer/bin/:
- set nodeexe="%~dp0..\src\inst\node\dist\node.exe"
- set nodecli="%~dp0..\src\kmc\build\src\kmlmp.js"
-) else (
- rem Cannot find node or kmlmp.js relative to execution path
- echo Error: node.exe or kmlmp.js not found.
- exit /b 1
-)
-
-%nodeexe% --enable-source-maps %nodecli% %*
-exit /b %errorlevel%
diff --git a/package-lock.json b/package-lock.json
index 7618527727..f5c4e68d9e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -281,9 +281,7 @@
"supports-color": "^9.4.0"
},
"bin": {
- "kmc": "build/src/kmc.js",
- "kmlmc": "build/src/kmlmc.js",
- "kmlmp": "build/src/kmlmp.js"
+ "kmc": "build/src/kmc.js"
},
"devDependencies": {
"@sentry/cli": "^2.31.0",