-
Notifications
You must be signed in to change notification settings - Fork 633
/
Copy pathbuild-on-demand.mjs
29 lines (26 loc) · 1.16 KB
/
build-on-demand.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Copyright © SixtyFPS GmbH <[email protected]>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
// This file checks if a binary package was installed (through architecture dependencies), and
// builds slint if no binary was found.
import { Worker } from "node:worker_threads";
import { spawn } from "node:child_process";
import { existsSync } from "node:fs";
const worker = new Worker("./rust-module.cjs");
// Define dummy error handler to prevent node from aborting on errors
worker.on("error", (error) => {
//console.log(`Error loading rust-module.cjs: {error}`);
});
worker.on("exit", (code) => {
if (code !== 0) {
// HACK: npm package removes .npmignore. If the file is present, then it means that we're in the Slint git repo,
// and we don't want to automatically build (see https://github.com/slint-ui/slint/pull/6780).
if (!existsSync("./.npmignore")) {
console.log(
"slint-ui: loading rust-module.cjs failed, building now",
);
spawn("npm", ["run", "build"], {
stdio: "inherit",
});
}
}
});