@keymanapp/kmc 19.0.145-alpha → 19.0.151-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 +183 -191
- package/build/src/commands/build.js +11 -11
- package/build/src/commands/copy.js +8 -8
- package/build/src/commands/messageCommand.js +31 -31
- package/build/src/kmc.js +0 -0
- package/build/src/kmlmc.js +0 -0
- package/build/src/kmlmp.js +0 -0
- package/build/src/util/KeymanSentry.js +7 -7
- package/build/unicode-license.txt +41 -41
- package/package.json +88 -87
package/README.md
CHANGED
|
@@ -1,191 +1,183 @@
|
|
|
1
|
-
Keyman Developer - Command Line Compiler
|
|
2
|
-
================
|
|
3
|
-
|
|
4
|
-
This package provides a command-line interface to the
|
|
5
|
-
[Keyman Developer](https://keyman.com/developer) compiler toolchain, `kmc`.
|
|
6
|
-
|
|
7
|
-
## Install kmc
|
|
8
|
-
|
|
9
|
-
`kmc` is available as:
|
|
10
|
-
* a part of Keyman Developer (Windows only)
|
|
11
|
-
* an npm package, and
|
|
12
|
-
* a zip download
|
|
13
|
-
|
|
14
|
-
Hint: Unlike previous versions of Keyman Developer, version 17 of kmc does not
|
|
15
|
-
require WINE to run the command line tools on Linux or macOS.
|
|
16
|
-
|
|
17
|
-
### Keyman Developer integration (Windows only)
|
|
18
|
-
|
|
19
|
-
kmc is included with a default installation of Keyman Developer, including a
|
|
20
|
-
runtime of node.js, and will be on the system path by default. No additional
|
|
21
|
-
configuration or installation is required.
|
|
22
|
-
|
|
23
|
-
### npm (Windows, macOS, and Linux)
|
|
24
|
-
|
|
25
|
-
kmc is also available as an npm package,
|
|
26
|
-
[@keymanapp/kmc](https://npmjs.com/package/@keymanapp/kmc).
|
|
27
|
-
|
|
28
|
-
You'll need [node.js](https://nodejs.org/), version 20.0 or later.
|
|
29
|
-
|
|
30
|
-
```shell
|
|
31
|
-
npm install -g @keymanapp/kmc
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### Zip download (Windows, macOS, and Linux)
|
|
35
|
-
|
|
36
|
-
kmc is also available as a zip download from
|
|
37
|
-
[keyman.com/developer/download](https://keyman.com/developer/download),
|
|
38
|
-
or can be installed from the command line (`curl` and `unzip` required):
|
|
39
|
-
|
|
40
|
-
```shell
|
|
41
|
-
# To build keyboards and packages:
|
|
42
|
-
mkdir kmc
|
|
43
|
-
cd kmc
|
|
44
|
-
# hint: the download is currently called 'kmcomp', although the
|
|
45
|
-
# compiler is now called 'kmc'.
|
|
46
|
-
curl -L https://keyman.com/go/download/kmcomp -o kmc.zip
|
|
47
|
-
unzip kmc.zip
|
|
48
|
-
# Optionally, add kmc to your PATH
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## The five minute quick start
|
|
52
|
-
|
|
53
|
-
### 1. Download a sample keyboard project
|
|
54
|
-
|
|
55
|
-
<!-- TODO: THIS SECTION NEEDS REWRITE ONCE `kmc generate` lands in 18.0. -->
|
|
56
|
-
|
|
57
|
-
We'll download a sample project from GitHub for Khmer. If you do not have the
|
|
58
|
-
command-line git tools installed, you can visit the [repository
|
|
59
|
-
website](https://github.com/keyman-keyboards/khmer_angkor) and download it as a
|
|
60
|
-
zip file instead.
|
|
61
|
-
|
|
62
|
-
```shell
|
|
63
|
-
git clone https://github.com/keyman-keyboards/khmer_angkor
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
This will have created a new folder called `khmer_angkor/`.
|
|
67
|
-
|
|
68
|
-
### 2. Build the project
|
|
69
|
-
|
|
70
|
-
Now, we'll build our keyboard project with kmc.
|
|
71
|
-
|
|
72
|
-
```shell
|
|
73
|
-
cd khmer_angkor
|
|
74
|
-
kmc build .
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
And... that's it! We'll now have a compiled keyboard and package in the `build/`
|
|
78
|
-
subfolder. The file `build/khmer_angkor.kmp` can be installed into any of the
|
|
79
|
-
Keyman apps, and `build/khmer_angkor.js` can be added to KeymanWeb.
|
|
80
|
-
|
|
81
|
-
### 3. Install the keyboard
|
|
82
|
-
|
|
83
|
-
**Windows**: we can install this keyboard using [`kmshell`][windows-install-keyboard]:
|
|
84
|
-
|
|
85
|
-
```cmd
|
|
86
|
-
"%ProgramFiles(x86)%\Keyman\Keyman Desktop\kmshell" -i build\khmer_angkor.kmp -s
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Alternatively you can double-click the .kmp package file in Windows Explorer to
|
|
90
|
-
install it.
|
|
91
|
-
|
|
92
|
-
**Linux**: we'd use the following
|
|
93
|
-
[`km-package-install`][linux-install-keyboard]
|
|
94
|
-
command:
|
|
95
|
-
|
|
96
|
-
```shell
|
|
97
|
-
km-package-install -f build/khmer_angkor.kmp
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**macOS**: open Keyman Configuration and drop the package khmer_angkor.kmp file
|
|
101
|
-
onto the Keyman Configuration window.
|
|
102
|
-
|
|
103
|
-
**Android**: send khmer_angkor.kmp to your Android device, and [install it](https://help.keyman.com/products/android/current-version/basic/installing-custom-packages) from the
|
|
104
|
-
hamburger menu in the Keyman app.
|
|
105
|
-
|
|
106
|
-
**iOS**: send khmer_angkor.kmp to your iOS device, and install it from the
|
|
107
|
-
hamburger menu in the Keyman app.
|
|
108
|
-
|
|
109
|
-
**Web**: copy khmer_angkor.js to your website, then [load it with KeymanWeb][load-keymanweb-keyboard]:
|
|
110
|
-
|
|
111
|
-
```js
|
|
112
|
-
keyman.addKeyboards({
|
|
113
|
-
id:'khmer_angkor', // The keyboard's unique identification code.
|
|
114
|
-
name:'Khmer Angkor', // The keyboard's user-readable name.
|
|
115
|
-
language:{
|
|
116
|
-
id:'km', // A BCP 47 code uniquely identifying the language.
|
|
117
|
-
name:'Khmer' // The language's name.
|
|
118
|
-
},
|
|
119
|
-
filename:'./khmer_angkor.js',
|
|
120
|
-
});
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## File layout
|
|
124
|
-
|
|
125
|
-
See [file layout][file-layout] for details on the standard source file layout
|
|
126
|
-
that Keyman Developer works best with.
|
|
127
|
-
|
|
128
|
-
## Reference and Examples
|
|
129
|
-
|
|
130
|
-
### kmc - command line compiler
|
|
131
|
-
|
|
132
|
-
[kmc][kmc] is the command line compiler. You can use it to compile
|
|
133
|
-
all Keyman files.
|
|
134
|
-
|
|
135
|
-
The most common command will be `kmc build`:
|
|
136
|
-
|
|
137
|
-
`kmc build project.kpj`
|
|
138
|
-
: Compile all components of a keyboard or model project named `project.kpj`
|
|
139
|
-
KMComp will respect the path settings within the project file. This is the
|
|
140
|
-
recommended way to build, as it will build keyboards, models and packages all in
|
|
141
|
-
one step. You can also call `kmc build <folder>` to build the project in the
|
|
142
|
-
referenced folder, e.g. `kmc build .`.
|
|
143
|
-
|
|
144
|
-
* [kmc reference][kmc]
|
|
145
|
-
|
|
146
|
-
-----
|
|
147
|
-
|
|
148
|
-
# Working with the source
|
|
149
|
-
|
|
150
|
-
## Building kmc
|
|
151
|
-
|
|
152
|
-
Run `build.sh`:
|
|
153
|
-
|
|
154
|
-
```shell
|
|
155
|
-
./build.sh configure build
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
Once you have run `configure` once, you should not normally need to do it again
|
|
159
|
-
unless dependencies change or you clean the build folder. `./build.sh` without
|
|
160
|
-
parameters will do the default action, which is `build`.
|
|
161
|
-
|
|
162
|
-
## Testing kmc
|
|
163
|
-
|
|
164
|
-
```shell
|
|
165
|
-
./build.sh test
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## Bundling for installation
|
|
169
|
-
|
|
170
|
-
```shell
|
|
171
|
-
./build.sh bundle --build-path <temp_path>
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
The temp_path must be a path outside the repository to avoid npm getting
|
|
175
|
-
confused by the root package.json. This is called by inst/download.in.mak
|
|
176
|
-
normally when building the Keyman Developer installer.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
Publishes the current release to NPM. This should only be run from CI.
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
[kmc]: https://help.keyman.com/developer/current-version/reference/kmc/cli
|
|
188
|
-
[file-layout]: https://help.keyman.com/developer/current-version/reference/file-layout
|
|
189
|
-
[load-keymanweb-keyboard]: https://help.keyman.com/developer/engine/web/current-version/guide/adding-keyboards
|
|
190
|
-
[linux-install-keyboard]: https://help.keyman.com/products/linux/current-version/reference/km-package-install
|
|
191
|
-
[windows-install-keyboard]: https://help.keyman.com/knowledge-base/98
|
|
1
|
+
Keyman Developer - Command Line Compiler
|
|
2
|
+
================
|
|
3
|
+
|
|
4
|
+
This package provides a command-line interface to the
|
|
5
|
+
[Keyman Developer](https://keyman.com/developer) compiler toolchain, `kmc`.
|
|
6
|
+
|
|
7
|
+
## Install kmc
|
|
8
|
+
|
|
9
|
+
`kmc` is available as:
|
|
10
|
+
* a part of Keyman Developer (Windows only)
|
|
11
|
+
* an npm package, and
|
|
12
|
+
* a zip download
|
|
13
|
+
|
|
14
|
+
Hint: Unlike previous versions of Keyman Developer, version 17 of kmc does not
|
|
15
|
+
require WINE to run the command line tools on Linux or macOS.
|
|
16
|
+
|
|
17
|
+
### Keyman Developer integration (Windows only)
|
|
18
|
+
|
|
19
|
+
kmc is included with a default installation of Keyman Developer, including a
|
|
20
|
+
runtime of node.js, and will be on the system path by default. No additional
|
|
21
|
+
configuration or installation is required.
|
|
22
|
+
|
|
23
|
+
### npm (Windows, macOS, and Linux)
|
|
24
|
+
|
|
25
|
+
kmc is also available as an npm package,
|
|
26
|
+
[@keymanapp/kmc](https://npmjs.com/package/@keymanapp/kmc).
|
|
27
|
+
|
|
28
|
+
You'll need [node.js](https://nodejs.org/), version 20.0 or later.
|
|
29
|
+
|
|
30
|
+
```shell
|
|
31
|
+
npm install -g @keymanapp/kmc
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Zip download (Windows, macOS, and Linux)
|
|
35
|
+
|
|
36
|
+
kmc is also available as a zip download from
|
|
37
|
+
[keyman.com/developer/download](https://keyman.com/developer/download),
|
|
38
|
+
or can be installed from the command line (`curl` and `unzip` required):
|
|
39
|
+
|
|
40
|
+
```shell
|
|
41
|
+
# To build keyboards and packages:
|
|
42
|
+
mkdir kmc
|
|
43
|
+
cd kmc
|
|
44
|
+
# hint: the download is currently called 'kmcomp', although the
|
|
45
|
+
# compiler is now called 'kmc'.
|
|
46
|
+
curl -L https://keyman.com/go/download/kmcomp -o kmc.zip
|
|
47
|
+
unzip kmc.zip
|
|
48
|
+
# Optionally, add kmc to your PATH
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## The five minute quick start
|
|
52
|
+
|
|
53
|
+
### 1. Download a sample keyboard project
|
|
54
|
+
|
|
55
|
+
<!-- TODO: THIS SECTION NEEDS REWRITE ONCE `kmc generate` lands in 18.0. -->
|
|
56
|
+
|
|
57
|
+
We'll download a sample project from GitHub for Khmer. If you do not have the
|
|
58
|
+
command-line git tools installed, you can visit the [repository
|
|
59
|
+
website](https://github.com/keyman-keyboards/khmer_angkor) and download it as a
|
|
60
|
+
zip file instead.
|
|
61
|
+
|
|
62
|
+
```shell
|
|
63
|
+
git clone https://github.com/keyman-keyboards/khmer_angkor
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
This will have created a new folder called `khmer_angkor/`.
|
|
67
|
+
|
|
68
|
+
### 2. Build the project
|
|
69
|
+
|
|
70
|
+
Now, we'll build our keyboard project with kmc.
|
|
71
|
+
|
|
72
|
+
```shell
|
|
73
|
+
cd khmer_angkor
|
|
74
|
+
kmc build .
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
And... that's it! We'll now have a compiled keyboard and package in the `build/`
|
|
78
|
+
subfolder. The file `build/khmer_angkor.kmp` can be installed into any of the
|
|
79
|
+
Keyman apps, and `build/khmer_angkor.js` can be added to KeymanWeb.
|
|
80
|
+
|
|
81
|
+
### 3. Install the keyboard
|
|
82
|
+
|
|
83
|
+
**Windows**: we can install this keyboard using [`kmshell`][windows-install-keyboard]:
|
|
84
|
+
|
|
85
|
+
```cmd
|
|
86
|
+
"%ProgramFiles(x86)%\Keyman\Keyman Desktop\kmshell" -i build\khmer_angkor.kmp -s
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Alternatively you can double-click the .kmp package file in Windows Explorer to
|
|
90
|
+
install it.
|
|
91
|
+
|
|
92
|
+
**Linux**: we'd use the following
|
|
93
|
+
[`km-package-install`][linux-install-keyboard]
|
|
94
|
+
command:
|
|
95
|
+
|
|
96
|
+
```shell
|
|
97
|
+
km-package-install -f build/khmer_angkor.kmp
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**macOS**: open Keyman Configuration and drop the package khmer_angkor.kmp file
|
|
101
|
+
onto the Keyman Configuration window.
|
|
102
|
+
|
|
103
|
+
**Android**: send khmer_angkor.kmp to your Android device, and [install it](https://help.keyman.com/products/android/current-version/basic/installing-custom-packages) from the
|
|
104
|
+
hamburger menu in the Keyman app.
|
|
105
|
+
|
|
106
|
+
**iOS**: send khmer_angkor.kmp to your iOS device, and install it from the
|
|
107
|
+
hamburger menu in the Keyman app.
|
|
108
|
+
|
|
109
|
+
**Web**: copy khmer_angkor.js to your website, then [load it with KeymanWeb][load-keymanweb-keyboard]:
|
|
110
|
+
|
|
111
|
+
```js
|
|
112
|
+
keyman.addKeyboards({
|
|
113
|
+
id:'khmer_angkor', // The keyboard's unique identification code.
|
|
114
|
+
name:'Khmer Angkor', // The keyboard's user-readable name.
|
|
115
|
+
language:{
|
|
116
|
+
id:'km', // A BCP 47 code uniquely identifying the language.
|
|
117
|
+
name:'Khmer' // The language's name.
|
|
118
|
+
},
|
|
119
|
+
filename:'./khmer_angkor.js',
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## File layout
|
|
124
|
+
|
|
125
|
+
See [file layout][file-layout] for details on the standard source file layout
|
|
126
|
+
that Keyman Developer works best with.
|
|
127
|
+
|
|
128
|
+
## Reference and Examples
|
|
129
|
+
|
|
130
|
+
### kmc - command line compiler
|
|
131
|
+
|
|
132
|
+
[kmc][kmc] is the command line compiler. You can use it to compile
|
|
133
|
+
all Keyman files.
|
|
134
|
+
|
|
135
|
+
The most common command will be `kmc build`:
|
|
136
|
+
|
|
137
|
+
`kmc build project.kpj`
|
|
138
|
+
: Compile all components of a keyboard or model project named `project.kpj`
|
|
139
|
+
KMComp will respect the path settings within the project file. This is the
|
|
140
|
+
recommended way to build, as it will build keyboards, models and packages all in
|
|
141
|
+
one step. You can also call `kmc build <folder>` to build the project in the
|
|
142
|
+
referenced folder, e.g. `kmc build .`.
|
|
143
|
+
|
|
144
|
+
* [kmc reference][kmc]
|
|
145
|
+
|
|
146
|
+
-----
|
|
147
|
+
|
|
148
|
+
# Working with the source
|
|
149
|
+
|
|
150
|
+
## Building kmc
|
|
151
|
+
|
|
152
|
+
Run `build.sh`:
|
|
153
|
+
|
|
154
|
+
```shell
|
|
155
|
+
./build.sh configure build
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Once you have run `configure` once, you should not normally need to do it again
|
|
159
|
+
unless dependencies change or you clean the build folder. `./build.sh` without
|
|
160
|
+
parameters will do the default action, which is `build`.
|
|
161
|
+
|
|
162
|
+
## Testing kmc
|
|
163
|
+
|
|
164
|
+
```shell
|
|
165
|
+
./build.sh test
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Bundling for installation
|
|
169
|
+
|
|
170
|
+
```shell
|
|
171
|
+
./build.sh bundle --build-path <temp_path>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The temp_path must be a path outside the repository to avoid npm getting
|
|
175
|
+
confused by the root package.json. This is called by inst/download.in.mak
|
|
176
|
+
normally when building the Keyman Developer installer.
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
[kmc]: https://help.keyman.com/developer/current-version/reference/kmc/cli
|
|
180
|
+
[file-layout]: https://help.keyman.com/developer/current-version/reference/file-layout
|
|
181
|
+
[load-keymanweb-keyboard]: https://help.keyman.com/developer/engine/web/current-version/guide/adding-keyboards
|
|
182
|
+
[linux-install-keyboard]: https://help.keyman.com/products/linux/current-version/reference/km-package-install
|
|
183
|
+
[windows-install-keyboard]: https://help.keyman.com/knowledge-base/98
|
|
@@ -28,17 +28,17 @@ export function declareBuild(program) {
|
|
|
28
28
|
buildCommand.command('file [infile...]', { isDefault: true })
|
|
29
29
|
.description(`Compile one or more source files or projects ('file' subcommand is default).`)
|
|
30
30
|
.option('--for-publishing', 'Verify that project meets @keymanapp repository requirements')
|
|
31
|
-
.addHelpText('after', `
|
|
32
|
-
Supported file types:
|
|
33
|
-
* folder: Keyman project in folder
|
|
34
|
-
* .kpj: Keyman project
|
|
35
|
-
* .kmn: Keyman keyboard
|
|
36
|
-
* .xml: LDML keyboard
|
|
37
|
-
* .model.ts: Keyman lexical model
|
|
38
|
-
* .kps: Keyman keyboard or lexical model package
|
|
39
|
-
|
|
40
|
-
File lists can be referenced with @filelist.txt.
|
|
41
|
-
|
|
31
|
+
.addHelpText('after', `
|
|
32
|
+
Supported file types:
|
|
33
|
+
* folder: Keyman project in folder
|
|
34
|
+
* .kpj: Keyman project
|
|
35
|
+
* .kmn: Keyman keyboard
|
|
36
|
+
* .xml: LDML keyboard
|
|
37
|
+
* .model.ts: Keyman lexical model
|
|
38
|
+
* .kps: Keyman keyboard or lexical model package
|
|
39
|
+
|
|
40
|
+
File lists can be referenced with @filelist.txt.
|
|
41
|
+
|
|
42
42
|
If no input file is supplied, kmc will build the current folder.`)
|
|
43
43
|
.action(buildFile);
|
|
44
44
|
buildCommand
|
|
@@ -19,14 +19,14 @@ export function declareCopy(program) {
|
|
|
19
19
|
.option('-n, --dry-run', 'Show what would happen, without making changes')
|
|
20
20
|
.option('-r, --relocate-external', 'Copy external files into "external" folder')
|
|
21
21
|
.action(copyProject)
|
|
22
|
-
.addHelpText('before', `
|
|
23
|
-
<project> can be:
|
|
24
|
-
* a .kpj file, e.g. ./keyboards/khmer_angkor/khmer_angkor.kpj
|
|
25
|
-
* a local folder (with a .kpj file in it), e.g. ./keyboards/khmer_angkor
|
|
26
|
-
* a cloud keyboard or lexical model, cloud:id, e.g. cloud:khmer_angkor
|
|
27
|
-
* a GitHub repository, branch, and path, [https://]github.com/owner/repo/tree/branch/path
|
|
28
|
-
e.g. https://github.com/keyman-keyboards/khmer_angkor/tree/main/khmer_angkor.kpj or
|
|
29
|
-
github.com/keymanapp/keyboards/tree/master/release/k/khmer_angkor
|
|
22
|
+
.addHelpText('before', `
|
|
23
|
+
<project> can be:
|
|
24
|
+
* a .kpj file, e.g. ./keyboards/khmer_angkor/khmer_angkor.kpj
|
|
25
|
+
* a local folder (with a .kpj file in it), e.g. ./keyboards/khmer_angkor
|
|
26
|
+
* a cloud keyboard or lexical model, cloud:id, e.g. cloud:khmer_angkor
|
|
27
|
+
* a GitHub repository, branch, and path, [https://]github.com/owner/repo/tree/branch/path
|
|
28
|
+
e.g. https://github.com/keyman-keyboards/khmer_angkor/tree/main/khmer_angkor.kpj or
|
|
29
|
+
github.com/keymanapp/keyboards/tree/master/release/k/khmer_angkor
|
|
30
30
|
`);
|
|
31
31
|
}
|
|
32
32
|
function commanderOptionsToCopierOptions(options) {
|
|
@@ -12,9 +12,9 @@ export function declareMessage(program) {
|
|
|
12
12
|
program
|
|
13
13
|
.command('message [messages...]')
|
|
14
14
|
.description(`Describe one or more compiler messages. Note: Markdown format is always written to files on disk.`)
|
|
15
|
-
.addHelpText('after', `
|
|
16
|
-
Message identifiers can be:
|
|
17
|
-
* numeric, e.g. "KM07006" or "7006", or
|
|
15
|
+
.addHelpText('after', `
|
|
16
|
+
Message identifiers can be:
|
|
17
|
+
* numeric, e.g. "KM07006" or "7006", or
|
|
18
18
|
* [namespace.]id, substring id supported; e.g. "kmc-kmn.INFO_MinimumEngineVersion" or "kmc-kmn." or "INFO_Min"`)
|
|
19
19
|
.addOption(new Option('-f, --format <format>', 'Output format').choices(['text', 'markdown', 'json']).default('text'))
|
|
20
20
|
.option('-o, --out-path <out-path>', 'Output path for Markdown files; output filename for text and json formats')
|
|
@@ -169,13 +169,13 @@ function getMessagesAsText(messages) {
|
|
|
169
169
|
}
|
|
170
170
|
function formatMessageAsText(moduleName, cls, code, id) {
|
|
171
171
|
const message = getMessageDetail(cls, id, false);
|
|
172
|
-
return `${id}
|
|
173
|
-
* Code: ${CompilerError.formatCode(code)}
|
|
174
|
-
* Module: ${moduleName}
|
|
175
|
-
* Message: ${message.message}
|
|
176
|
-
* Reference: ${helpUrl(code)}
|
|
177
|
-
|
|
178
|
-
${message.detail}
|
|
172
|
+
return `${id}
|
|
173
|
+
* Code: ${CompilerError.formatCode(code)}
|
|
174
|
+
* Module: ${moduleName}
|
|
175
|
+
* Message: ${message.message}
|
|
176
|
+
* Reference: ${helpUrl(code)}
|
|
177
|
+
|
|
178
|
+
${message.detail}
|
|
179
179
|
`;
|
|
180
180
|
}
|
|
181
181
|
/*---------------------------------------------------------------------------
|
|
@@ -210,10 +210,10 @@ function messageCommandMarkdown(messages, options, callbacks) {
|
|
|
210
210
|
return true;
|
|
211
211
|
}
|
|
212
212
|
function exportAllMessagesAsMarkdown(outPath) {
|
|
213
|
-
let index = `---
|
|
214
|
-
title: Compiler Messages Reference
|
|
215
|
-
---
|
|
216
|
-
|
|
213
|
+
let index = `---
|
|
214
|
+
title: Compiler Messages Reference
|
|
215
|
+
---
|
|
216
|
+
|
|
217
217
|
`;
|
|
218
218
|
messageNamespaceKeys.forEach((namespace) => {
|
|
219
219
|
const ms = messageSources[namespace];
|
|
@@ -225,12 +225,12 @@ title: Compiler Messages Reference
|
|
|
225
225
|
}
|
|
226
226
|
function exportModuleMessagesAsMarkdown(moduleName, ms, outPath) {
|
|
227
227
|
const cls = ms.class;
|
|
228
|
-
let index = `---
|
|
229
|
-
title: Compiler Messages Reference for @keymanapp/${ms.module}
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
Code | Identifier | Message
|
|
233
|
-
------|------------|---------
|
|
228
|
+
let index = `---
|
|
229
|
+
title: Compiler Messages Reference for @keymanapp/${ms.module}
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
Code | Identifier | Message
|
|
233
|
+
------|------------|---------
|
|
234
234
|
`;
|
|
235
235
|
const ids = getMessageIdentifiersSorted(cls);
|
|
236
236
|
for (const id of ids) {
|
|
@@ -244,17 +244,17 @@ title: Compiler Messages Reference for @keymanapp/${ms.module}
|
|
|
244
244
|
fs.writeFileSync(path.join(outPath, moduleName.toLowerCase() + '.md'), index, 'utf-8');
|
|
245
245
|
}
|
|
246
246
|
function formatMessageAsMarkdown(moduleName, id, message) {
|
|
247
|
-
return `---
|
|
248
|
-
title: ${CompilerError.formatCode(message.code)}: ${id}
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
| | |
|
|
252
|
-
|------------|---------- |
|
|
253
|
-
| Message | ${message.message} |
|
|
254
|
-
| Module | [${moduleName}](${moduleName.toLowerCase()}) |
|
|
255
|
-
| Identifier | \`${id}\` |
|
|
256
|
-
|
|
257
|
-
${message.detail}
|
|
247
|
+
return `---
|
|
248
|
+
title: ${CompilerError.formatCode(message.code)}: ${id}
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
| | |
|
|
252
|
+
|------------|---------- |
|
|
253
|
+
| Message | ${message.message} |
|
|
254
|
+
| Module | [${moduleName}](${moduleName.toLowerCase()}) |
|
|
255
|
+
| Identifier | \`${id}\` |
|
|
256
|
+
|
|
257
|
+
${message.detail}
|
|
258
258
|
`;
|
|
259
259
|
}
|
|
260
260
|
//# sourceMappingURL=messageCommand.js.map
|
package/build/src/kmc.js
CHANGED
|
File without changes
|
package/build/src/kmlmc.js
CHANGED
|
File without changes
|
package/build/src/kmlmp.js
CHANGED
|
File without changes
|
|
@@ -29,11 +29,11 @@ export class KeymanSentry {
|
|
|
29
29
|
isInit = true;
|
|
30
30
|
}
|
|
31
31
|
static writeSentryMessage(eventId) {
|
|
32
|
-
process.stderr.write(`
|
|
33
|
-
This error has been automatically reported to the Keyman team.
|
|
34
|
-
Identifier: ${eventId}
|
|
35
|
-
Application: Keyman Developer
|
|
36
|
-
Reported at: https://sentry.io/organizations/keyman/projects/keyman-developer/events/${eventId}/
|
|
32
|
+
process.stderr.write(`
|
|
33
|
+
This error has been automatically reported to the Keyman team.
|
|
34
|
+
Identifier: ${eventId}
|
|
35
|
+
Application: Keyman Developer
|
|
36
|
+
Reported at: https://sentry.io/organizations/keyman/projects/keyman-developer/events/${eventId}/
|
|
37
37
|
`);
|
|
38
38
|
}
|
|
39
39
|
static async reportException(e, silent = true) {
|
|
@@ -68,8 +68,8 @@ export class KeymanSentry {
|
|
|
68
68
|
throw e;
|
|
69
69
|
}
|
|
70
70
|
const eventId = Sentry.captureException(e);
|
|
71
|
-
process.stderr.write(`
|
|
72
|
-
Fatal error: ${(e ?? '').toString()}
|
|
71
|
+
process.stderr.write(`
|
|
72
|
+
Fatal error: ${(e ?? '').toString()}
|
|
73
73
|
`);
|
|
74
74
|
this.writeSentryMessage(eventId);
|
|
75
75
|
await this.close();
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
UNICODE LICENSE V3
|
|
2
|
-
|
|
3
|
-
COPYRIGHT AND PERMISSION NOTICE
|
|
4
|
-
|
|
5
|
-
Copyright © 1991-2024 Unicode, Inc.
|
|
6
|
-
|
|
7
|
-
NOTICE TO USER: Carefully read the following legal agreement. BY
|
|
8
|
-
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
|
|
9
|
-
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
|
|
10
|
-
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
|
|
11
|
-
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
|
|
12
|
-
|
|
13
|
-
Permission is hereby granted, free of charge, to any person obtaining a
|
|
14
|
-
copy of data files and any associated documentation (the "Data Files") or
|
|
15
|
-
software and any associated documentation (the "Software") to deal in the
|
|
16
|
-
Data Files or Software without restriction, including without limitation
|
|
17
|
-
the rights to use, copy, modify, merge, publish, distribute, and/or sell
|
|
18
|
-
copies of the Data Files or Software, and to permit persons to whom the
|
|
19
|
-
Data Files or Software are furnished to do so, provided that either (a)
|
|
20
|
-
this copyright and permission notice appear with all copies of the Data
|
|
21
|
-
Files or Software, or (b) this copyright and permission notice appear in
|
|
22
|
-
associated Documentation.
|
|
23
|
-
|
|
24
|
-
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
|
25
|
-
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
26
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
|
27
|
-
THIRD PARTY RIGHTS.
|
|
28
|
-
|
|
29
|
-
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
|
|
30
|
-
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
|
|
31
|
-
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
32
|
-
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
33
|
-
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
|
|
34
|
-
FILES OR SOFTWARE.
|
|
35
|
-
|
|
36
|
-
Except as contained in this notice, the name of a copyright holder shall
|
|
37
|
-
not be used in advertising or otherwise to promote the sale, use or other
|
|
38
|
-
dealings in these Data Files or Software without prior written
|
|
39
|
-
authorization of the copyright holder.
|
|
40
|
-
|
|
41
|
-
SPDX-License-Identifier: Unicode-3.0
|
|
1
|
+
UNICODE LICENSE V3
|
|
2
|
+
|
|
3
|
+
COPYRIGHT AND PERMISSION NOTICE
|
|
4
|
+
|
|
5
|
+
Copyright © 1991-2024 Unicode, Inc.
|
|
6
|
+
|
|
7
|
+
NOTICE TO USER: Carefully read the following legal agreement. BY
|
|
8
|
+
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
|
|
9
|
+
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
|
|
10
|
+
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
|
|
11
|
+
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
|
|
12
|
+
|
|
13
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
|
14
|
+
copy of data files and any associated documentation (the "Data Files") or
|
|
15
|
+
software and any associated documentation (the "Software") to deal in the
|
|
16
|
+
Data Files or Software without restriction, including without limitation
|
|
17
|
+
the rights to use, copy, modify, merge, publish, distribute, and/or sell
|
|
18
|
+
copies of the Data Files or Software, and to permit persons to whom the
|
|
19
|
+
Data Files or Software are furnished to do so, provided that either (a)
|
|
20
|
+
this copyright and permission notice appear with all copies of the Data
|
|
21
|
+
Files or Software, or (b) this copyright and permission notice appear in
|
|
22
|
+
associated Documentation.
|
|
23
|
+
|
|
24
|
+
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
|
25
|
+
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
26
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
|
27
|
+
THIRD PARTY RIGHTS.
|
|
28
|
+
|
|
29
|
+
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
|
|
30
|
+
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
|
|
31
|
+
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
32
|
+
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
33
|
+
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
|
|
34
|
+
FILES OR SOFTWARE.
|
|
35
|
+
|
|
36
|
+
Except as contained in this notice, the name of a copyright holder shall
|
|
37
|
+
not be used in advertising or otherwise to promote the sale, use or other
|
|
38
|
+
dealings in these Data Files or Software without prior written
|
|
39
|
+
authorization of the copyright holder.
|
|
40
|
+
|
|
41
|
+
SPDX-License-Identifier: Unicode-3.0
|
package/package.json
CHANGED
|
@@ -1,87 +1,88 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@keymanapp/kmc",
|
|
3
|
-
"description": "Keyman Developer compiler command line tools",
|
|
4
|
-
"keywords": [
|
|
5
|
-
"keyboard",
|
|
6
|
-
"keyman",
|
|
7
|
-
"ldml",
|
|
8
|
-
"unicode",
|
|
9
|
-
"lexical-model",
|
|
10
|
-
"predictive-text"
|
|
11
|
-
],
|
|
12
|
-
"scripts": {
|
|
13
|
-
"build": "tsc -b",
|
|
14
|
-
"bundle": "npm run bundle-kmc && npm run bundle-kmlmc && npm run bundle-kmlmp",
|
|
15
|
-
"bundle-kmc": "esbuild build/src/kmc.js --bundle --platform=node --target=es2022 > build/cjs-src/kmc.cjs",
|
|
16
|
-
"bundle-kmlmc": "esbuild build/src/kmlmc.js --bundle --platform=node --target=es2022 > build/cjs-src/kmlmc.cjs",
|
|
17
|
-
"bundle-kmlmp": "esbuild build/src/kmlmp.js --bundle --platform=node --target=es2022 > build/cjs-src/kmlmp.cjs",
|
|
18
|
-
"test": "eslint . && cd test && tsc -b && cd .. && mocha"
|
|
19
|
-
},
|
|
20
|
-
"type": "module",
|
|
21
|
-
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
|
22
|
-
"contributors": [
|
|
23
|
-
"Eddie Antonio Santos <Eddie.Santos@nrc-cnrc.gc.ca>",
|
|
24
|
-
"Joshua Horton"
|
|
25
|
-
],
|
|
26
|
-
"license": "MIT",
|
|
27
|
-
"bugs": {
|
|
28
|
-
"url": "https://github.com/keymanapp/keyman/issues"
|
|
29
|
-
},
|
|
30
|
-
"main": "build/src/kmc.js",
|
|
31
|
-
"bin": {
|
|
32
|
-
"kmc": "build/src/kmc.js",
|
|
33
|
-
"kmlmc": "build/src/kmlmc.js",
|
|
34
|
-
"kmlmp": "build/src/kmlmp.js"
|
|
35
|
-
},
|
|
36
|
-
"dependencies": {
|
|
37
|
-
"@keymanapp/common-types": "19.0.
|
|
38
|
-
"@keymanapp/developer-utils": "19.0.
|
|
39
|
-
"@keymanapp/keyman-version": "19.0.
|
|
40
|
-
"@keymanapp/kmc-analyze": "19.0.
|
|
41
|
-
"@keymanapp/kmc-copy": "19.0.
|
|
42
|
-
"@keymanapp/kmc-generate": "19.0.
|
|
43
|
-
"@keymanapp/kmc-keyboard-info": "19.0.
|
|
44
|
-
"@keymanapp/kmc-kmn": "19.0.
|
|
45
|
-
"@keymanapp/kmc-ldml": "19.0.
|
|
46
|
-
"@keymanapp/kmc-model": "19.0.
|
|
47
|
-
"@keymanapp/kmc-model-info": "19.0.
|
|
48
|
-
"@keymanapp/kmc-package": "19.0.
|
|
49
|
-
"@sentry/node": "^7.57.0",
|
|
50
|
-
"chalk": "^2.4.2",
|
|
51
|
-
"commander": "^10.0.0",
|
|
52
|
-
"supports-color": "^9.4.0"
|
|
53
|
-
},
|
|
54
|
-
"files": [
|
|
55
|
-
"build/src/",
|
|
56
|
-
"build/unicode-license.txt"
|
|
57
|
-
],
|
|
58
|
-
"devDependencies": {
|
|
59
|
-
"@sentry/cli": "^2.31.0",
|
|
60
|
-
"@types/mocha": "^5.2.7",
|
|
61
|
-
"@types/node": "^20.4.1",
|
|
62
|
-
"c8": "^7.12.0",
|
|
63
|
-
"esbuild": "^0.25.0",
|
|
64
|
-
"typescript": "^5.4.5"
|
|
65
|
-
},
|
|
66
|
-
"mocha": {
|
|
67
|
-
"spec": "build/test/**/*.tests.js",
|
|
68
|
-
"require": [
|
|
69
|
-
"source-map-support/register"
|
|
70
|
-
]
|
|
71
|
-
},
|
|
72
|
-
"c8": {
|
|
73
|
-
"all": true,
|
|
74
|
-
"src": [
|
|
75
|
-
"src/"
|
|
76
|
-
],
|
|
77
|
-
"exclude-after-remap": true,
|
|
78
|
-
"exclude": [
|
|
79
|
-
"test/"
|
|
80
|
-
]
|
|
81
|
-
},
|
|
82
|
-
"repository": {
|
|
83
|
-
"type": "git",
|
|
84
|
-
"url": "git+https://github.com/keymanapp/keyman.git"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@keymanapp/kmc",
|
|
3
|
+
"description": "Keyman Developer compiler command line tools",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"keyboard",
|
|
6
|
+
"keyman",
|
|
7
|
+
"ldml",
|
|
8
|
+
"unicode",
|
|
9
|
+
"lexical-model",
|
|
10
|
+
"predictive-text"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc -b",
|
|
14
|
+
"bundle": "npm run bundle-kmc && npm run bundle-kmlmc && npm run bundle-kmlmp",
|
|
15
|
+
"bundle-kmc": "esbuild build/src/kmc.js --bundle --platform=node --target=es2022 > build/cjs-src/kmc.cjs",
|
|
16
|
+
"bundle-kmlmc": "esbuild build/src/kmlmc.js --bundle --platform=node --target=es2022 > build/cjs-src/kmlmc.cjs",
|
|
17
|
+
"bundle-kmlmp": "esbuild build/src/kmlmp.js --bundle --platform=node --target=es2022 > build/cjs-src/kmlmp.cjs",
|
|
18
|
+
"test": "eslint . && cd test && tsc -b && cd .. && mocha"
|
|
19
|
+
},
|
|
20
|
+
"type": "module",
|
|
21
|
+
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
|
22
|
+
"contributors": [
|
|
23
|
+
"Eddie Antonio Santos <Eddie.Santos@nrc-cnrc.gc.ca>",
|
|
24
|
+
"Joshua Horton"
|
|
25
|
+
],
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/keymanapp/keyman/issues"
|
|
29
|
+
},
|
|
30
|
+
"main": "build/src/kmc.js",
|
|
31
|
+
"bin": {
|
|
32
|
+
"kmc": "build/src/kmc.js",
|
|
33
|
+
"kmlmc": "build/src/kmlmc.js",
|
|
34
|
+
"kmlmp": "build/src/kmlmp.js"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@keymanapp/common-types": "19.0.151-alpha",
|
|
38
|
+
"@keymanapp/developer-utils": "19.0.151-alpha",
|
|
39
|
+
"@keymanapp/keyman-version": "19.0.151-alpha",
|
|
40
|
+
"@keymanapp/kmc-analyze": "19.0.151-alpha",
|
|
41
|
+
"@keymanapp/kmc-copy": "19.0.151-alpha",
|
|
42
|
+
"@keymanapp/kmc-generate": "19.0.151-alpha",
|
|
43
|
+
"@keymanapp/kmc-keyboard-info": "19.0.151-alpha",
|
|
44
|
+
"@keymanapp/kmc-kmn": "19.0.151-alpha",
|
|
45
|
+
"@keymanapp/kmc-ldml": "19.0.151-alpha",
|
|
46
|
+
"@keymanapp/kmc-model": "19.0.151-alpha",
|
|
47
|
+
"@keymanapp/kmc-model-info": "19.0.151-alpha",
|
|
48
|
+
"@keymanapp/kmc-package": "19.0.151-alpha",
|
|
49
|
+
"@sentry/node": "^7.57.0",
|
|
50
|
+
"chalk": "^2.4.2",
|
|
51
|
+
"commander": "^10.0.0",
|
|
52
|
+
"supports-color": "^9.4.0"
|
|
53
|
+
},
|
|
54
|
+
"files": [
|
|
55
|
+
"build/src/",
|
|
56
|
+
"build/unicode-license.txt"
|
|
57
|
+
],
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@sentry/cli": "^2.31.0",
|
|
60
|
+
"@types/mocha": "^5.2.7",
|
|
61
|
+
"@types/node": "^20.4.1",
|
|
62
|
+
"c8": "^7.12.0",
|
|
63
|
+
"esbuild": "^0.25.0",
|
|
64
|
+
"typescript": "^5.4.5"
|
|
65
|
+
},
|
|
66
|
+
"mocha": {
|
|
67
|
+
"spec": "build/test/**/*.tests.js",
|
|
68
|
+
"require": [
|
|
69
|
+
"source-map-support/register"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"c8": {
|
|
73
|
+
"all": true,
|
|
74
|
+
"src": [
|
|
75
|
+
"src/"
|
|
76
|
+
],
|
|
77
|
+
"exclude-after-remap": true,
|
|
78
|
+
"exclude": [
|
|
79
|
+
"test/"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"repository": {
|
|
83
|
+
"type": "git",
|
|
84
|
+
"url": "git+https://github.com/keymanapp/keyman.git",
|
|
85
|
+
"directory": "developer/src/kmc"
|
|
86
|
+
},
|
|
87
|
+
"version": "19.0.151-alpha"
|
|
88
|
+
}
|