@keymanapp/kmc 17.0.60-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -0
- package/build/cjs-src/kmc.cjs +183594 -0
- package/build/cjs-src/kmlmc.cjs +154539 -0
- package/build/cjs-src/kmlmi.cjs +17266 -0
- package/build/cjs-src/kmlmp.cjs +17210 -0
- package/build/src/activities/buildKmnKeyboard.d.ts +3 -0
- package/build/src/activities/buildKmnKeyboard.d.ts.map +1 -0
- package/build/src/activities/buildKmnKeyboard.js +45 -0
- package/build/src/activities/buildKmnKeyboard.js.map +1 -0
- package/build/src/activities/buildLdmlKeyboard.d.ts +3 -0
- package/build/src/activities/buildLdmlKeyboard.d.ts.map +1 -0
- package/build/src/activities/buildLdmlKeyboard.js +72 -0
- package/build/src/activities/buildLdmlKeyboard.js.map +1 -0
- package/build/src/activities/buildModel.d.ts +3 -0
- package/build/src/activities/buildModel.d.ts.map +1 -0
- package/build/src/activities/buildModel.js +22 -0
- package/build/src/activities/buildModel.js.map +1 -0
- package/build/src/activities/buildPackage.d.ts +3 -0
- package/build/src/activities/buildPackage.d.ts.map +1 -0
- package/build/src/activities/buildPackage.js +24 -0
- package/build/src/activities/buildPackage.js.map +1 -0
- package/build/src/activities/buildProject.d.ts +3 -0
- package/build/src/activities/buildProject.d.ts.map +1 -0
- package/build/src/activities/buildProject.js +114 -0
- package/build/src/activities/buildProject.js.map +1 -0
- package/build/src/activities/buildTestData.d.ts +3 -0
- package/build/src/activities/buildTestData.d.ts.map +1 -0
- package/build/src/activities/buildTestData.js +31 -0
- package/build/src/activities/buildTestData.js.map +1 -0
- package/build/src/commands/build.d.ts +8 -0
- package/build/src/commands/build.d.ts.map +1 -0
- package/build/src/commands/build.js +50 -0
- package/build/src/commands/build.js.map +1 -0
- package/build/src/commands/buildTestData.d.ts +3 -0
- package/build/src/commands/buildTestData.d.ts.map +1 -0
- package/build/src/commands/buildTestData.js +9 -0
- package/build/src/commands/buildTestData.js.map +1 -0
- package/build/src/kmc.d.ts +6 -0
- package/build/src/kmc.d.ts.map +1 -0
- package/build/src/kmc.js +40 -0
- package/build/src/kmc.js.map +1 -0
- package/build/src/kmlmc.d.ts +6 -0
- package/build/src/kmlmc.d.ts.map +1 -0
- package/build/src/kmlmc.js +49 -0
- package/build/src/kmlmc.js.map +1 -0
- package/build/src/kmlmi.d.ts +6 -0
- package/build/src/kmlmi.d.ts.map +1 -0
- package/build/src/kmlmi.js +64 -0
- package/build/src/kmlmi.js.map +1 -0
- package/build/src/kmlmp.d.ts +6 -0
- package/build/src/kmlmp.d.ts.map +1 -0
- package/build/src/kmlmp.js +46 -0
- package/build/src/kmlmp.js.map +1 -0
- package/build/src/util/NodeCompilerCallbacks.d.ts +14 -0
- package/build/src/util/NodeCompilerCallbacks.d.ts.map +1 -0
- package/build/src/util/NodeCompilerCallbacks.js +41 -0
- package/build/src/util/NodeCompilerCallbacks.js.map +1 -0
- package/build/src/util/getDeveloperBinPath.d.ts +9 -0
- package/build/src/util/getDeveloperBinPath.d.ts.map +1 -0
- package/build/src/util/getDeveloperBinPath.js +36 -0
- package/build/src/util/getDeveloperBinPath.js.map +1 -0
- package/build/src/util/kpj.schema.json +127 -0
- package/build/src/util/kvks.schema.json +182 -0
- package/build/src/util/ldml-keyboard.schema.json +634 -0
- package/build/src/util/ldml-keyboardtest.schema.json +221 -0
- package/build/src/util/sysexits.d.ts +9 -0
- package/build/src/util/sysexits.d.ts.map +1 -0
- package/build/src/util/sysexits.js +3 -0
- package/build/src/util/sysexits.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* kmlmi - Keyman Lexical Model model_info Compiler
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import KmpCompiler from '@keymanapp/kmc-package';
|
|
9
|
+
import { writeMergedModelMetadataFile } from '@keymanapp/kmc-model-info';
|
|
10
|
+
import KEYMAN_VERSION from "@keymanapp/keyman-version/keyman-version.mjs";
|
|
11
|
+
let inputFilename;
|
|
12
|
+
const program = new Command();
|
|
13
|
+
/* Arguments */
|
|
14
|
+
program
|
|
15
|
+
.description('Merges Keyman lexical model model_info files. Intended for use within the keymanapp/lexical-models repository.')
|
|
16
|
+
.version(KEYMAN_VERSION.VERSION_WITH_TAG)
|
|
17
|
+
.arguments('<infile>')
|
|
18
|
+
.action(infile => inputFilename = infile)
|
|
19
|
+
.option('-o, --outFile <filename>', 'where to save the resultant file')
|
|
20
|
+
.option('-m, --model <model_id>', 'model id, defaults to basename of input file sans .model_info extension')
|
|
21
|
+
.option('-s, --source <source>', 'path to source of model, relative to lexical-models repo root')
|
|
22
|
+
.option('--kpsFilename <kpsFilename>', 'path to .model.kps file, defaults to source/<model_id>.model.kps')
|
|
23
|
+
.option('--kmpFilename <kmpFilename>', 'path to .model.kmp file, defaults to build/<model_id>.model.kmp')
|
|
24
|
+
.option('--jsFilename <jsFilename>', 'path to .model.js file, defaults to build/<model_id>.model.js');
|
|
25
|
+
program.parse(process.argv);
|
|
26
|
+
// Deal with input arguments:
|
|
27
|
+
if (!inputFilename) {
|
|
28
|
+
exitDueToUsageError('Must provide a lexical model .model_info source file.');
|
|
29
|
+
}
|
|
30
|
+
let model_id = program.opts().model ? program.opts().model : path.basename(inputFilename).replace(/\.model_info$/, "");
|
|
31
|
+
let outputFilename = program.opts().outFile ? program.opts().outFile : path.join(path.dirname(inputFilename), 'build', path.basename(inputFilename));
|
|
32
|
+
let kpsFilename = program.opts().kpsFilename ? program.opts().kpsFilename : path.join(path.dirname(inputFilename), 'source', path.basename(inputFilename).replace(/\.model_info$/, '.model.kps'));
|
|
33
|
+
let kmpFilename = program.opts().kmpFilename ? program.opts().kmpFilename : path.join(path.dirname(inputFilename), 'build', path.basename(inputFilename).replace(/\.model_info$/, '.model.kmp'));
|
|
34
|
+
let jsFilename = program.opts().jsFilename ? program.opts().jsFilename : path.join(path.dirname(inputFilename), 'build', path.basename(inputFilename).replace(/\.model_info$/, '.model.js'));
|
|
35
|
+
//
|
|
36
|
+
// Load .kps source data
|
|
37
|
+
//
|
|
38
|
+
let kpsString = fs.readFileSync(kpsFilename, 'utf8');
|
|
39
|
+
let kmpCompiler = new KmpCompiler();
|
|
40
|
+
let kmpJsonData = kmpCompiler.transformKpsToKmpObject(kpsString, kpsFilename);
|
|
41
|
+
//
|
|
42
|
+
// Write out the merged .model_info file
|
|
43
|
+
//
|
|
44
|
+
let modelInfoOptions = {
|
|
45
|
+
model_id: model_id,
|
|
46
|
+
kmpJsonData: kmpJsonData,
|
|
47
|
+
sourcePath: program.opts().source,
|
|
48
|
+
modelFileName: jsFilename,
|
|
49
|
+
kmpFileName: kmpFilename
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
writeMergedModelMetadataFile(inputFilename, outputFilename, modelInfoOptions);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
console.error(e);
|
|
56
|
+
process.exit(65 /* SysExits.EX_DATAERR */);
|
|
57
|
+
}
|
|
58
|
+
function exitDueToUsageError(message) {
|
|
59
|
+
console.error(`${program.name()}: ${message}`);
|
|
60
|
+
console.error();
|
|
61
|
+
program.outputHelp();
|
|
62
|
+
return process.exit(64 /* SysExits.EX_USAGE */);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=kmlmi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kmlmi.js","sourceRoot":"","sources":["../../src/kmlmi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kmlmp.d.ts","sourceRoot":"","sources":["../../src/kmlmp.ts"],"names":[],"mappings":";AACA;;GAEG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* kmlmp - Keyman Lexical Model Package Compiler
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import KmpCompiler from '@keymanapp/kmc-package';
|
|
8
|
+
import KEYMAN_VERSION from "@keymanapp/keyman-version/keyman-version.mjs";
|
|
9
|
+
let inputFilename;
|
|
10
|
+
const program = new Command();
|
|
11
|
+
/* Arguments */
|
|
12
|
+
program
|
|
13
|
+
.description('Compiles Keyman lexical model packages')
|
|
14
|
+
.version(KEYMAN_VERSION.VERSION_WITH_TAG)
|
|
15
|
+
.arguments('<infile>')
|
|
16
|
+
.action(infile => inputFilename = infile)
|
|
17
|
+
.option('-o, --outFile <filename>', 'where to save the resultant file');
|
|
18
|
+
program.parse(process.argv);
|
|
19
|
+
// Deal with input arguments:
|
|
20
|
+
if (!inputFilename) {
|
|
21
|
+
exitDueToUsageError('Must provide a lexical model package source file.');
|
|
22
|
+
}
|
|
23
|
+
let outputFilename = program.opts().outFile ? program.opts().outFile : inputFilename.replace(/\.kps$/, ".kmp");
|
|
24
|
+
//
|
|
25
|
+
// Load .kps source data
|
|
26
|
+
//
|
|
27
|
+
let kpsString = fs.readFileSync(inputFilename, 'utf8');
|
|
28
|
+
let kmpCompiler = new KmpCompiler();
|
|
29
|
+
let kmpJsonData = kmpCompiler.transformKpsToKmpObject(kpsString, inputFilename);
|
|
30
|
+
//
|
|
31
|
+
// Build the .kmp package file
|
|
32
|
+
//
|
|
33
|
+
let promise = kmpCompiler.buildKmpFile(inputFilename, kmpJsonData);
|
|
34
|
+
promise.then(data => {
|
|
35
|
+
fs.writeFileSync(outputFilename, data, 'binary');
|
|
36
|
+
}).catch(error => {
|
|
37
|
+
// Consumer decides how to handle errors
|
|
38
|
+
console.error('Failed to write kmp file');
|
|
39
|
+
});
|
|
40
|
+
function exitDueToUsageError(message) {
|
|
41
|
+
console.error(`${program.name()}: ${message}`);
|
|
42
|
+
console.error();
|
|
43
|
+
program.outputHelp();
|
|
44
|
+
return process.exit(64 /* SysExits.EX_USAGE */);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=kmlmp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kmlmp.js","sourceRoot":"","sources":["../../src/kmlmp.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,cAAc,MAAM,8CAA8C,CAAC;AAE1E,IAAI,aAAqB,CAAC;AAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,eAAe;AACf,OAAO;KACJ,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC;KACxC,SAAS,CAAC,UAAU,CAAC;KACrB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC;KACxC,MAAM,CAAC,0BAA0B,EAAE,kCAAkC,CAAC,CAAC;AAE1E,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,6BAA6B;AAE7B,IAAI,CAAC,aAAa,EAAE;IAClB,mBAAmB,CAAC,mDAAmD,CAAC,CAAC;CAC1E;AAED,IAAI,cAAc,GAAW,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEvH,EAAE;AACF,wBAAwB;AACxB,EAAE;AAEF,IAAI,SAAS,GAAW,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACpC,IAAI,WAAW,GAAG,WAAW,CAAC,uBAAuB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAEhF,EAAE;AACF,8BAA8B;AAC9B,EAAE;AAEF,IAAI,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACnE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAClB,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACf,wCAAwC;IACxC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,OAAO,CAAC,IAAI,4BAAmB,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { CompilerCallbacks, CompilerEvent } from '@keymanapp/common-types';
|
|
3
|
+
/**
|
|
4
|
+
* Concrete implementation for CLI use
|
|
5
|
+
*/
|
|
6
|
+
export declare class NodeCompilerCallbacks implements CompilerCallbacks {
|
|
7
|
+
loadFile(baseFilename: string, filename: string | URL): Buffer;
|
|
8
|
+
reportMessage(event: CompilerEvent): void;
|
|
9
|
+
loadLdmlKeyboardSchema(): Buffer;
|
|
10
|
+
loadLdmlKeyboardTestSchema(): Buffer;
|
|
11
|
+
loadKvksJsonSchema(): Buffer;
|
|
12
|
+
loadKpjJsonSchema(): Buffer;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=NodeCompilerCallbacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeCompilerCallbacks.d.ts","sourceRoot":"","sources":["../../../src/util/NodeCompilerCallbacks.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE3E;;GAEG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM;IAY9D,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAGzC,sBAAsB,IAAI,MAAM;IAIhC,0BAA0B,IAAI,MAAM;IAIpC,kBAAkB,IAAI,MAAM;IAI5B,iBAAiB,IAAI,MAAM;CAI5B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as kmc from '@keymanapp/kmc-keyboard';
|
|
3
|
+
/**
|
|
4
|
+
* Concrete implementation for CLI use
|
|
5
|
+
*/
|
|
6
|
+
export class NodeCompilerCallbacks {
|
|
7
|
+
loadFile(baseFilename, filename) {
|
|
8
|
+
// TODO: translate filename based on the baseFilename
|
|
9
|
+
try {
|
|
10
|
+
return fs.readFileSync(filename);
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
if (e.code === 'ENOENT') {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
throw e;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
reportMessage(event) {
|
|
22
|
+
console.log(kmc.CompilerMessages.severityName(event.code) + ' ' + event.code.toString(16) + ': ' + event.message);
|
|
23
|
+
}
|
|
24
|
+
loadLdmlKeyboardSchema() {
|
|
25
|
+
let schemaPath = new URL('ldml-keyboard.schema.json', import.meta.url);
|
|
26
|
+
return fs.readFileSync(schemaPath);
|
|
27
|
+
}
|
|
28
|
+
loadLdmlKeyboardTestSchema() {
|
|
29
|
+
let schemaPath = new URL('ldml-keyboardtest.schema.json', import.meta.url);
|
|
30
|
+
return fs.readFileSync(schemaPath);
|
|
31
|
+
}
|
|
32
|
+
loadKvksJsonSchema() {
|
|
33
|
+
let schemaPath = new URL('kvks.schema.json', import.meta.url);
|
|
34
|
+
return fs.readFileSync(schemaPath);
|
|
35
|
+
}
|
|
36
|
+
loadKpjJsonSchema() {
|
|
37
|
+
let schemaPath = new URL('kpj.schema.json', import.meta.url);
|
|
38
|
+
return fs.readFileSync(schemaPath);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=NodeCompilerCallbacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeCompilerCallbacks.js","sourceRoot":"","sources":["../../../src/util/NodeCompilerCallbacks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAG/C;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChC,QAAQ,CAAC,YAAoB,EAAE,QAAsB;QACnD,qDAAqD;QACrD,IAAI;YACF,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAClC;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACvB,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,MAAM,CAAC,CAAC;aACT;SACF;IACH,CAAC;IACD,aAAa,CAAC,KAAoB;QAChC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACpH,CAAC;IACD,sBAAsB;QACpB,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,0BAA0B;QACxB,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,kBAAkB;QAChB,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,iBAAiB;QACf,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locates the Keyman Developer bin folder, checking first if this is running
|
|
3
|
+
* from the source repository (using the presence of the KEYMAN_ROOT environment
|
|
4
|
+
* variable), and if not, checking for the presence of kmcomp.exe in each
|
|
5
|
+
* parent folder recursively until we reach the root of the filesystem.
|
|
6
|
+
* @returns string | null
|
|
7
|
+
*/
|
|
8
|
+
export declare function getDeveloperBinPath(): string;
|
|
9
|
+
//# sourceMappingURL=getDeveloperBinPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeveloperBinPath.d.ts","sourceRoot":"","sources":["../../../src/util/getDeveloperBinPath.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA0B5C"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
/**
|
|
5
|
+
* Locates the Keyman Developer bin folder, checking first if this is running
|
|
6
|
+
* from the source repository (using the presence of the KEYMAN_ROOT environment
|
|
7
|
+
* variable), and if not, checking for the presence of kmcomp.exe in each
|
|
8
|
+
* parent folder recursively until we reach the root of the filesystem.
|
|
9
|
+
* @returns string | null
|
|
10
|
+
*/
|
|
11
|
+
export function getDeveloperBinPath() {
|
|
12
|
+
// if running in source repo, then we always look in developer/bin/
|
|
13
|
+
const keymanRoot = process.env['KEYMAN_ROOT'];
|
|
14
|
+
if (keymanRoot) {
|
|
15
|
+
// https://stackoverflow.com/a/45242825/1836776 (imperfect due to
|
|
16
|
+
// possibility of '..foo', but good enough)
|
|
17
|
+
const rel = path.relative(keymanRoot, import.meta.url);
|
|
18
|
+
if (rel && !rel.startsWith('..') && !path.isAbsolute(rel)) {
|
|
19
|
+
return path.join(keymanRoot, 'developer', 'bin');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Otherwise, we will look in parent folders until we find kmcomp.exe
|
|
23
|
+
// TODO: once we eliminate kmcomp.exe, we'll need to do this some other way?
|
|
24
|
+
let p = fileURLToPath(import.meta.url);
|
|
25
|
+
const root = path.parse(p).root.toLowerCase(); // lower-case for drive letter on Windows
|
|
26
|
+
p = path.dirname(p);
|
|
27
|
+
do {
|
|
28
|
+
if (fs.existsSync(path.join(p, 'kmcomp.exe'))) {
|
|
29
|
+
return p;
|
|
30
|
+
}
|
|
31
|
+
p = path.dirname(p);
|
|
32
|
+
} while (p.toLowerCase() != root);
|
|
33
|
+
// kmcomp.exe was not found on the path
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=getDeveloperBinPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeveloperBinPath.js","sourceRoot":"","sources":["../../../src/util/getDeveloperBinPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB;IACjC,mEAAmE;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,UAAU,EAAE;QACd,iEAAiE;QACjE,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACzD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;SAClD;KACF;IAED,qEAAqE;IACrE,4EAA4E;IAC5E,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,yCAAyC;IACxF,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,GAAG;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE;YAC7C,OAAO,CAAC,CAAC;SACV;QACD,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KACrB,QAAQ,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;IAElC,uCAAuC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "kpj.xsd",
|
|
3
|
+
"$schema": "http://json-schema.org/schema#",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"KeymanDeveloperProject": {
|
|
7
|
+
"properties": {
|
|
8
|
+
"Options": {
|
|
9
|
+
"$ref": "#/definitions/Options"
|
|
10
|
+
},
|
|
11
|
+
"Files": {
|
|
12
|
+
"$ref": "#/definitions/Files"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"required": [
|
|
16
|
+
"Options"
|
|
17
|
+
],
|
|
18
|
+
"additionalProperties": false,
|
|
19
|
+
"type": "object"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"required": [
|
|
23
|
+
"KeymanDeveloperProject"
|
|
24
|
+
],
|
|
25
|
+
"additionalProperties": false,
|
|
26
|
+
"definitions": {
|
|
27
|
+
"Options": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"properties": {
|
|
30
|
+
"BuildPath": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
},
|
|
33
|
+
"SourcePath": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"CompilerWarningsAsErrors": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"pattern": "^(True|False)$"
|
|
39
|
+
},
|
|
40
|
+
"WarnDeprecatedCode": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"pattern": "^(True|False)$"
|
|
43
|
+
},
|
|
44
|
+
"CheckFilenameConventions": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"pattern": "^(True|False)$"
|
|
47
|
+
},
|
|
48
|
+
"ProjectType": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"pattern": "^(keyboard|lexicalmodel)$"
|
|
51
|
+
},
|
|
52
|
+
"Version": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"pattern": "^(1\\.0|2\\.0)$"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"required": [
|
|
58
|
+
],
|
|
59
|
+
"additionalProperties": false
|
|
60
|
+
},
|
|
61
|
+
"Files": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"properties": {
|
|
64
|
+
"File": {
|
|
65
|
+
"type": "array",
|
|
66
|
+
"items": {
|
|
67
|
+
"$ref": "#/definitions/File"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"additionalProperties": false,
|
|
72
|
+
"required": [
|
|
73
|
+
"File"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"File": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"properties": {
|
|
79
|
+
"ID": {
|
|
80
|
+
"type": "string"
|
|
81
|
+
},
|
|
82
|
+
"Filename": {
|
|
83
|
+
"type": "string"
|
|
84
|
+
},
|
|
85
|
+
"Filepath": {
|
|
86
|
+
"type": "string"
|
|
87
|
+
},
|
|
88
|
+
"FileVersion": {
|
|
89
|
+
"type": "string"
|
|
90
|
+
},
|
|
91
|
+
"FileType": {
|
|
92
|
+
"type": "string"
|
|
93
|
+
},
|
|
94
|
+
"Details": {
|
|
95
|
+
"$ref": "#/definitions/FileDetails"
|
|
96
|
+
},
|
|
97
|
+
"ParentFileID": {
|
|
98
|
+
"type": "string"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"required": [
|
|
102
|
+
"Filename"
|
|
103
|
+
],
|
|
104
|
+
"additionalProperties": false
|
|
105
|
+
},
|
|
106
|
+
"FileDetails": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"properties": {
|
|
109
|
+
"Name": {
|
|
110
|
+
"type": "string"
|
|
111
|
+
},
|
|
112
|
+
"Copyright": {
|
|
113
|
+
"type": "string"
|
|
114
|
+
},
|
|
115
|
+
"Message": {
|
|
116
|
+
"type": "string"
|
|
117
|
+
},
|
|
118
|
+
"Version": {
|
|
119
|
+
"type": "string"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"required": [
|
|
123
|
+
],
|
|
124
|
+
"additionalProperties": false
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "kvks.xsd",
|
|
3
|
+
"$schema": "http://json-schema.org/schema#",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"visualkeyboard": {
|
|
7
|
+
"properties": {
|
|
8
|
+
"header": {
|
|
9
|
+
"$ref": "#/definitions/kvk-header"
|
|
10
|
+
},
|
|
11
|
+
"encoding": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"items": {
|
|
14
|
+
"$ref": "#/definitions/kvk-encoding"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"required": [
|
|
19
|
+
"header"
|
|
20
|
+
],
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"type": "object"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"required": [
|
|
26
|
+
"visualkeyboard"
|
|
27
|
+
],
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"definitions": {
|
|
30
|
+
"kvk-header": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"properties": {
|
|
33
|
+
"version": {
|
|
34
|
+
"$ref": "#/definitions/kvk-version"
|
|
35
|
+
},
|
|
36
|
+
"kbdname": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"flags": {
|
|
40
|
+
"$ref": "#/definitions/kvk-header-flags"
|
|
41
|
+
},
|
|
42
|
+
"layout": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"required": [
|
|
47
|
+
"version"
|
|
48
|
+
],
|
|
49
|
+
"additionalProperties": false
|
|
50
|
+
},
|
|
51
|
+
"kvk-header-flags": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"properties": {
|
|
54
|
+
"key102": {
|
|
55
|
+
"$ref": "#/definitions/km-empty"
|
|
56
|
+
},
|
|
57
|
+
"displayunderlying": {
|
|
58
|
+
"$ref": "#/definitions/km-empty"
|
|
59
|
+
},
|
|
60
|
+
"usealtgr": {
|
|
61
|
+
"$ref": "#/definitions/km-empty"
|
|
62
|
+
},
|
|
63
|
+
"useunderlying": {
|
|
64
|
+
"$ref": "#/definitions/km-empty"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"additionalProperties": false
|
|
68
|
+
},
|
|
69
|
+
"kvk-encoding": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"properties": {
|
|
72
|
+
"layer": {
|
|
73
|
+
"type": "array",
|
|
74
|
+
"items": {
|
|
75
|
+
"$ref": "#/definitions/kvk-layer"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"$": {
|
|
79
|
+
"type": "object",
|
|
80
|
+
"properties": {
|
|
81
|
+
"name": {
|
|
82
|
+
"$ref": "#/definitions/kvk-encoding-name"
|
|
83
|
+
},
|
|
84
|
+
"fontname": {
|
|
85
|
+
"type": "string"
|
|
86
|
+
},
|
|
87
|
+
"fontsize": {
|
|
88
|
+
"type": "string"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"required": [
|
|
92
|
+
"name"
|
|
93
|
+
],
|
|
94
|
+
"additionalProperties": false
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"required": [
|
|
98
|
+
"$"
|
|
99
|
+
],
|
|
100
|
+
"additionalProperties": false
|
|
101
|
+
},
|
|
102
|
+
"kvk-layer": {
|
|
103
|
+
"type": "object",
|
|
104
|
+
"properties": {
|
|
105
|
+
"key": {
|
|
106
|
+
"type": "array",
|
|
107
|
+
"items": {
|
|
108
|
+
"$ref": "#/definitions/kvk-key"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"$": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"properties": {
|
|
114
|
+
"shift": {
|
|
115
|
+
"$ref": "#/definitions/kvk-layer-shift"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"required": [
|
|
119
|
+
"shift"
|
|
120
|
+
],
|
|
121
|
+
"additionalProperties": false
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"required": [
|
|
125
|
+
"$"
|
|
126
|
+
],
|
|
127
|
+
"additionalProperties": false
|
|
128
|
+
},
|
|
129
|
+
"kvk-key": {
|
|
130
|
+
"type": "object",
|
|
131
|
+
"properties": {
|
|
132
|
+
"bitmap": {
|
|
133
|
+
"type": "string"
|
|
134
|
+
},
|
|
135
|
+
"$": {
|
|
136
|
+
"type": "object",
|
|
137
|
+
"properties": {
|
|
138
|
+
"vkey": {
|
|
139
|
+
"type": "string"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"required": [
|
|
143
|
+
"vkey"
|
|
144
|
+
],
|
|
145
|
+
"additionalProperties": false
|
|
146
|
+
},
|
|
147
|
+
"_": {
|
|
148
|
+
"type": "string"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"required": [
|
|
152
|
+
"$"
|
|
153
|
+
],
|
|
154
|
+
"additionalProperties": false
|
|
155
|
+
},
|
|
156
|
+
"km-empty": {
|
|
157
|
+
"type": "string"
|
|
158
|
+
},
|
|
159
|
+
"kvk-encoding-name": {
|
|
160
|
+
"type": "string",
|
|
161
|
+
"enum": [
|
|
162
|
+
"ansi",
|
|
163
|
+
"unicode"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
"kvk-layer-shift": {
|
|
167
|
+
"type": "string",
|
|
168
|
+
"pattern": "S?(C|LC|RC)?(A|LA|RA)?"
|
|
169
|
+
},
|
|
170
|
+
"kvk-version": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"pattern": "(\\d+\\.)+(\\d+)",
|
|
173
|
+
"enum": [
|
|
174
|
+
"10.0"
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
"km-version": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"pattern": "(\\d+\\.)+(\\d+)"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|