Commit graph

493 commits

Author SHA1 Message Date
Marc Durdin
e8fa870778 chore(developer): address review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-09-01 10:22:56 +02:00
Marc Durdin
cf22d460ff feat(developer): support output folder and --continue-on-error
Add support for specifying an output folder instead of filename for the
`--out-file` parameter of kmc. This allows for batch builds, which can
be much faster than invoking kmc for each file separately.

Alongside that, add a `--continue-on-error` parameter that allows for
batch builds to continue even if a single file fails to build. (Note
that if a fatal error is encountered, kmc aborts with exit code 70).
2026-08-28 10:29:28 +02:00
Sabine
0f35f1fc79 feat(developer): changes in kmc convert --help; import of ConverterArtifacts, ConverterToKmnArtifacts, ConverterResult, and ConverterToKmnResult 2026-08-21 16:16:35 +02:00
Keyman Server
7e8e53dbbc
Merge branch 'epic/kmc-convert' into auto/A19S35-merge-base-into-kmc-convert 2026-08-14 16:19:03 +02:00
Marc Durdin
0624bc900a
Merge pull request #16095 from keymanapp/dependabot/npm_and_yarn/esbuild-0.28.1
chore(deps-dev): bump esbuild from 0.25.0 to 0.28.1
2026-08-13 08:21:33 +02:00
Keyman Server
52298758cb
Merge branch 'epic/kmc-convert' into auto/A19S32-merge-base-into-kmc-convert 2026-07-04 13:19:46 +02:00
Marc Durdin
cfe2e8ef06 fix(developer): consolidate user options in TypeScript code
* Remove Server's 'config.json' redundant user options handling
* Refactor options.ts in Server and kmc to share common cross-platform
  code
* Move option defaults into common code and sync with .pas defaults
* Rename config.ts to standardPaths.ts to better represent the remaining
  purpose of the module.

Fixes: #13458
2026-06-24 06:27:10 +02:00
Keyman Server
784ed88f63
Merge branch 'epic/kmc-convert' into auto/A19S31-merge-master-into-kmc-convert 2026-06-22 17:46:54 +02:00
Marc Durdin
f52f383d93
Merge pull request #16076 from keymanapp/feat/developer/16068-run-project-validation-from-tike
feat(developer): run project validation from IDE
2026-06-15 22:17:10 +10:00
dependabot[bot]
0df88615a2
chore(deps-dev): bump esbuild from 0.25.0 to 0.28.1
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.25.0 to 0.28.1.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2025.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.25.0...v0.28.1)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version: 0.28.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-14 01:04:48 +00:00
Eberhard Beilharz
c1113ac21d
chore(web): address code review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Also change a few places that I missed.
2026-06-08 19:27:12 +02:00
Marc Durdin
1da2600818 feat(developer): run project validation from IDE
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
When option 'SkipMetadataFiles' is not set in the project (inverse of
'Build metadata files for Keyman Cloud' in Project Settings dialog),
then will run the validation step and generate .keyboard_info /
.model_info from the IDE. Also add corresponding log messages (and add
formatting for some others that were missing).

Fixes: #16068
Test-bot: skip
2026-06-08 14:26:39 +02:00
Keyman Server
23ab9f95d9
Merge branch 'epic/kmc-convert' into auto/A19S24-merge-master-into-kmc-convert 2026-03-13 07:45:54 +01:00
Marc Durdin
5129a482b4 fix(developer): await copier result before reporting success or failure
Without `await`, a 'success' message is always returned, because the
Promise that is returned is not nullish. While the log message was
misleading, the outcome was already correct, because the parent function
`copyProject()` did correctly await the call to `doCopy()`.

Fixes: #15699
Test-bot: skip
2026-03-09 06:24:57 +01:00
Marc Durdin
724a8ea0f5 maint(developer): cleanup additional TestCompilerCallbacks references
Address a review comment from #15665 and cleanup additional references
that I missed the first time around, along with the `fs.readFileSync`
`Uint8Array` cast.

Follows: #15665
Test-bot: skip
2026-03-05 13:15:43 +01:00
Marc Durdin
529a49431e maint(developer): make TestCompilerCallbacks usage more consistent and simplify
Simplify usage of `TestCompilerCallbacks` by making it responsible for
the `beforeEach` and `afterEach` incantations itself. There are a couple
of more complex usages of `TestCompilerCallbacks` which have been
excluded from this change on purpose.

Renamed `testCallbacks` to `callbacks` in the one place where it was
different.

Hoist @types/node and @types/mocha because inconsistent versions of
@types/mocha were causing compiler errors with this change.

Also added a cast to `fs.readFileSync` to `Uint8Array` to eliminate
compiler warnings/errors in test files.

Fixes: #15654
Test-bot: skip
2026-03-03 16:44:06 +01:00
Keyman Server
71b8894bfb
Merge branch 'epic/kmc-convert' into auto/A19S20-merge-master-into-kmc-convert 2026-01-16 08:36:20 +01:00
Marc Durdin
de875ff39c fix(developer): verify project file loaded successfully in analyze
Fixes: #15315
Fixes: KEYMAN-DEVELOPER-338
Test-bot: skip
Build-bot: skip
2025-12-08 08:08:08 +01:00
Marc Durdin
5b2571d214
Merge branch 'epic/kmc-convert' into auto/A19S16-merge-master-into-kmc-convert 2025-11-20 11:10:31 +01:00
Marc Durdin
5dbc438f53 maint(resources): add builder_launch function
Use `builder_launch` to launch other builder scripts rather than calling
directly, so that inheritable state and options are passed through.

Test-bot: skip
2025-11-10 11:46:14 +01:00
Marc Durdin
80a5785408 chore: Merge branch 'epic/kmc-convert' into auto/A19S15-merge-master-into-kmc-convert 2025-11-07 14:17:47 +01:00
Marc Durdin
933ea5bb58 change(developer): remove kmlmc and kmlmp
These were replaced by kmc in v17.0. We kept them as legacy alternatives
in v18.0, but it is time to remove them now to reduce the maintenance of
having multiple entry points to kmc.

Fixes: #13181
Test-bot: skip
2025-10-31 17:08:56 +01:00
Marc Durdin
df212364a2 maint(resources): add repository record for all published packages
While not documented as such, it appears that the repository record is
required with trusted publishing of npm packages.

Test-bot: skip
Build-bot: skip
2025-10-29 14:35:31 +01:00
Marc Durdin
12511894ef chore(developer): skip git date test for shallow clones
If the repository is a shallow checkout, then the only commit will be
the most recent one, and the test will fail. We could lookup the date of
the most recent test, but it's a pretty meaningless test, so instead we
will skip the test in this scenario.

For example, this happens on GitHub Actions when we do a shallow
checkout. The only risk we have is if we move all builds to shallow
checkouts and end up always skipping this test, but (a) the code is
unlikely to change, and (b) issuse would be  picked up on local builds
in that situation pretty quickly.
2025-10-29 10:30:27 +01:00
Marc Durdin
ba411774f6 maint(resources): move NPM package publishing to GitHub Actions
Due to recent changes in NPM package publishing security requirements,
we have to move from TeamCity build to a GitHub Action to publish our
NPM packages, so we can take advantage of trusted publishing. This
change also consolidates and centralizes the npm publishing into
resources/build/ci/npm-publish.sh, which removes a lot of boilerplate
from each of the build.sh scripts, and ensures consistency.

Packages will be `npm pack`ed on PR and test builds, and published in
release builds.

Ref: https://docs.npmjs.com/trusted-publishers
Ref: https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/
Fixes: #14963
Test-bot: skip
Build-bot: release:developer
2025-10-27 16:31:55 +01:00
Marc Durdin
fb12662429
Merge branch 'epic/kmc-convert' into chore/merge-master-into-kmc-convert 2025-08-28 10:47:04 +02:00
Keyman Server
a2b3215578
Merge branch 'epic/kmc-convert' into chore/merge-master-into-kmc-convert 2025-08-11 08:24:54 -07:00
Marc Durdin
f3fb3ac87b maint(common): move build-utils-ci.inc.sh to ci/ci-publish.inc.sh
Removes a number of unused functions from the file, renames remaining
functions to match our builder script prefix patterns, removes unused
imports from various build scripts (e.g. Android).

Fixes: #14453
2025-08-05 12:54:56 +10:00
Marc Durdin
acefdf281a maint(common): move typescript script functions into typescript.inc.sh
Fixes: #14448
Build-bot: build
Test-bot: skip
2025-08-03 07:01:57 +10:00
Marc Durdin
2726050601 maint(common): rename and move node-related script functions into node.inc.sh
Consolidates the node-related script functions into node.inc.sh, as part
of cleaning up the build scripts and making them easier to maintain into
the future.

Fixes: #14447
2025-08-02 13:34:29 +10:00
Marc Durdin
f394245636 maint(common): consolidate builder scripts
Clarifies the confusing builder.inc.sh / build-utils.sh distinction by
giving the scripts more appropriate names. Most build scripts should use
builder-full.inc.sh; some helper scripts can use builder-basic.inc.sh.
Documented in resources/build/README.md.

Renames:
* resources/build/builder.inc.sh to resources/build/builder-full.inc.sh
* resources/build/build-utils.sh to resources/build/builder-basic.inc.sh

Other changes:
* Moves Android-specific functions out of builder-basic.inc.sh and into
  android/build.sh.
* Renames functions in builder-basic.inc.sh

More functions may be moved from builder-basic.inc.sh into utils.inc.sh
or other scripts in the future.

Fixes: #14065
Build-bot: build all
Test-bot: skip
2025-08-02 08:11:24 +10:00
Marc Durdin
65158a0526 maint(common): rename shellHelperFunctions.sh to utils.inc.sh
Adds documentation for various functions, removes unused functions (a
couple of simple, very lightly used functions were unDRYed; these could
go back the other way across all shell scripts if necessary). TODO items
noted for follow-up refactoring.

Fixes: #14275
Relates-to: #14269
Build-bot: build all
Test-bot: skip
2025-08-02 06:58:40 +10:00
Marc Durdin
11a558e926 maint(developer): support buildLevel
Relates-to: 14125
Build-bot: build
Test-bot: skip
2025-06-14 15:22:15 +10:00
Keyman Server
76c515213e
Merge branch 'epic/kmc-convert' into chore/merge-master-into-kmc-convert 2025-06-12 17:02:25 -07:00
Marc Durdin
90187885c1 chore(developer): extend unit test timeout for getLastGitCommitDate 2025-06-10 10:22:29 +07:00
Marc Durdin
b9f8e8eb85
Merge branch 'epic/kmc-convert' into chore/merge-master-into-kmc-convert 2025-05-30 08:24:00 +07:00
Marc Durdin
c300c9bbd9 chore(developer): use const instead of let 2025-05-16 08:51:27 +02:00
Marc Durdin
c9b3ae41f4
Merge branch 'epic/kmc-convert' into chore/merge-master-into-kmc-convert 2025-05-16 13:00:18 +07:00
Joshua Horton
155c1a2b12 maint: update mocha
Some of the npm audit warnings left after #13897 require an updated `mocha` version to remedy.  As we only really use `mocha` to do unit-testing, it should be safe to update if all of our existing tests pass with the new version.

Test-bot: skip
2025-05-13 14:02:02 +07:00
Steven R. Loomis
c2b6a65f1b
Merge pull request #13375 from keymanapp/feat/developer/10622-xml-parse-line-numbers-epic-ldml
feat(developer): line numbers for XML parsing and kmc-ldml 🙀
2025-05-12 18:37:23 -05:00
Steven R. Loomis
8e2eb498e3 feat(developer): update for line numbers
- reduce whitespace churn

Fixes: #10622
2025-05-09 11:41:23 -05:00
Steven R. Loomis
ad0ea8678b feat(developer): update for line numbers
- added new DelegatingCompilerCallbacks class
- added ResolvingCompilerCallbacks which does event resolution
- added the XML file name metadata to *every object* after XML parse.

Fixes: #10622
2025-05-08 17:29:30 -05:00
Eberhard Beilharz
4d81589f48
maint(common): use unique names for Keyman version variables
Previously the builder scripts defined a readonly `VERSION` environment
variable for the Keyman version. That caused problems when another
(external) script tried to define a `VERSION` variable. We encountered
this problem when trying to move the TC build steps of a configuration
into a single script (#13399) when we tried to source `~/.nvm/nvm.sh`.

This change uses a Keyman specific prefix for the version variables and
renames `VERSION` → `KEYMAN_VERSION` etc. Unfortunately these variables
are used in a lot of places, so this turned out to be a bit of a yak
shave.

Test-bot: skip
2025-05-07 18:46:51 +02:00
Steven R. Loomis
937573869b Merge remote-tracking branch 'upstream/master' into feat/developer/10622-xml-parse-line-numbers-epic-ldml 2025-05-05 09:28:15 -05:00
Joshua Horton
d92ef04049 change(developer): clean up developer/src/kmc linter issues 2025-04-30 09:15:34 +07:00
Marc Durdin
6ab557914b
Merge branch 'epic/kmc-convert' into chore/merge-master-into-kmc-convert 2025-04-24 19:07:51 +07:00
Steven R. Loomis
e003612ea0 feat(developer): update for line numbers
- remove resolver complexity in callback subclasses
- call LDMLKeyboardXMLSourceFileReader.eventResolver.resolve() statically from ldml-compiler-messages

Fixes: #10622
2025-04-10 17:22:51 -05:00
Steven R. Loomis
64bcfc66e9 Merge remote-tracking branch 'upstream/master' into feat/developer/10622-xml-parse-line-numbers-epic-ldml 2025-04-10 17:02:05 -05:00
Marc Durdin
838aea52ed refactor(developer): consolidate project loader
Consolidates project loading code from kmc and kmc-copy, in preparation
for kmc-test epic. This leaves open a change we need to make to
CompilerCallbacks, to consolidate the fsAsync and net callbacks into
CompilerCallbacks as a first-class part of CompilerCallbacks. We will
then need to start to move all the fs and net callback interactions to
the async model across all kmc modules, at some point.
2025-04-03 11:37:54 +07:00
Marc Durdin
cf16c37869 refactor(developer): move sentry and developer options into console apps
Move the sentry dependency out of developer-utils and into the console
apps kmc and server, in process of making sure that developer-utils has
no node dependencies.

Also copy the options.ts module into kmc and server, for the same
reason.

This first step duplicates two units, options.ts and KeymanSentry.ts. We
do need to refactor this again later to avoid this duplication (maybe
via yet another internal package?)
2025-04-03 09:56:46 +07:00