xs-dev 1.8.0 → 1.8.1--canary.1b1fce4.0
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/build/package.json +2 -1
- package/build/src/commands/setup.js +2 -5
- package/build/src/commands/teardown.js +6 -7
- package/build/src/toolbox/setup/homebrew.js +5 -4
- package/build/src/toolbox/system/filesystem.js +32 -0
- package/build/src/toolbox/toolchains/esp32/index.js +39 -49
- package/build/src/toolbox/toolchains/esp32/mac.js +29 -76
- package/build/src/toolbox/toolchains/esp32/windows.js +3 -3
- package/build/src/toolbox/toolchains/esp8266.js +97 -108
- package/build/src/toolbox/toolchains/moddable/lin.js +39 -43
- package/build/src/toolbox/toolchains/moddable/mac.js +37 -42
- package/build/src/toolbox/toolchains/moddable/windows.js +28 -43
- package/build/src/toolbox/toolchains/nrf52.js +51 -65
- package/build/src/toolbox/toolchains/pico.js +92 -150
- package/build/src/toolbox/toolchains/wasm.js +41 -57
- package/build/src/toolbox/toolchains/zephyr.js +31 -49
- package/build/types/src/toolbox/system/filesystem.d.ts +3 -0
- package/package.json +2 -1
package/build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xs-dev",
|
|
3
|
-
"version": "1.8.0",
|
|
3
|
+
"version": "1.8.1--canary.1b1fce4.0",
|
|
4
4
|
"description": "CLI for automating the setup and usage of Moddable XS tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "build/types/types.d.ts",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"serialport": "^13.0.0",
|
|
61
61
|
"serve-handler": "^6.1.3",
|
|
62
62
|
"simple-plist": "1.4.0-0",
|
|
63
|
+
"streaming-iterables": "^8.0.1",
|
|
63
64
|
"tar-fs": "^3.1.2",
|
|
64
65
|
"unzip-stream": "^0.3.1",
|
|
65
66
|
"usb": "^2.2.0",
|
|
@@ -87,10 +87,7 @@ const command = buildCommand({
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
else {
|
|
90
|
-
|
|
91
|
-
type: 'step:fail',
|
|
92
|
-
message: `No toolchain registered for device: ${target}`,
|
|
93
|
-
}, spinner);
|
|
90
|
+
output.error(`No toolchain registered for device: ${target}`);
|
|
94
91
|
}
|
|
95
92
|
}
|
|
96
93
|
},
|
|
@@ -140,4 +137,4 @@ const command = buildCommand({
|
|
|
140
137
|
},
|
|
141
138
|
});
|
|
142
139
|
export default command;
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDOUMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHNUMsT0FBTyxhQUFhLE1BQU0sOEJBQThCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRTNELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLGFBQWEsR0FDZCxNQUFNLG9CQUFvQixDQUFBO0FBQzNCLE9BQU8sS0FBSyxNQUFNLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFFakUsU0FBUyxrQkFBa0IsQ0FDekIsT0FBMkIsRUFDM0IsTUFBMEIsRUFDMUIsVUFBOEI7SUFFOUIsTUFBTSxNQUFNLEdBQ1YsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUE7SUFDOUUsT0FBTyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0FBQ3RFLENBQUM7QUFZRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUM7SUFDM0IsSUFBSSxFQUFFO1FBQ0osS0FBSyxFQUFFLGtFQUFrRTtLQUMxRTtJQUNELEtBQUss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
|
|
@@ -8,6 +8,7 @@ import { getHostContext } from '../toolbox/toolchains/context.js';
|
|
|
8
8
|
import { createNonInteractivePrompter } from '../lib/prompter.js';
|
|
9
9
|
import { handleEvent } from '../lib/renderer.js';
|
|
10
10
|
import { EXPORTS_FILE_PATH, INSTALL_DIR, getProfilePath, } from '../toolbox/setup/constants.js';
|
|
11
|
+
import { parallelMerge } from 'streaming-iterables';
|
|
11
12
|
const command = buildCommand({
|
|
12
13
|
docs: {
|
|
13
14
|
brief: 'Remove all installed git repos and toolchains, unset environment changes',
|
|
@@ -17,12 +18,10 @@ const command = buildCommand({
|
|
|
17
18
|
const ctx = getHostContext();
|
|
18
19
|
const prompter = createNonInteractivePrompter();
|
|
19
20
|
spinner.start('Tearing down platform dependencies');
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
}
|
|
21
|
+
const removableToolchains = Object.values(toolchains).filter((toolchain) => toolchain.platforms.includes(ctx.platform));
|
|
22
|
+
const tasks = removableToolchains.map((toolchain) => toolchain.teardown(ctx, prompter));
|
|
23
|
+
for await (const event of parallelMerge(...tasks)) {
|
|
24
|
+
handleEvent(event, spinner);
|
|
26
25
|
}
|
|
27
26
|
// Non-toolchain cleanup: fontbm, exports file, shell profile
|
|
28
27
|
const remove = (path) => {
|
|
@@ -46,4 +45,4 @@ const command = buildCommand({
|
|
|
46
45
|
},
|
|
47
46
|
});
|
|
48
47
|
export default command;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvdGVhcmRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQTtBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGNBQWMsR0FDZixNQUFNLCtCQUErQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVuRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUM7SUFDM0IsSUFBSSxFQUFFO1FBQ0osS0FBSyxFQUNILDBFQUEwRTtLQUM3RTtJQUNELEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUE7UUFDckIsTUFBTSxHQUFHLEdBQUcsY0FBYyxFQUFFLENBQUE7UUFDNUIsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLEVBQUUsQ0FBQTtRQUUvQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFFbkQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ3pFLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FDM0MsQ0FBQTtRQUNELE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ2xELFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUNsQyxDQUFBO1FBQ0QsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzdCLENBQUM7UUFFRCw2REFBNkQ7UUFDN0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQVEsRUFBRTtZQUNwQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNoRCxDQUFDLENBQUE7UUFDRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBRW5DLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO1FBQ3BDLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3BELE1BQU0sT0FBTyxHQUFHLFFBQVE7aUJBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUM7aUJBQ1gsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssVUFBVSxpQkFBaUIsRUFBRSxDQUFDO2lCQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDYixNQUFNLFNBQVMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFFRCxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUNELFVBQVUsRUFBRTtRQUNWLEtBQUssRUFBRSxFQUFFO0tBQ1Y7Q0FDRixDQUFDLENBQUE7QUFFRixlQUFlLE9BQU8sQ0FBQSJ9
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import os from 'node:os';
|
|
2
|
+
import { debuglog } from 'node:util';
|
|
2
3
|
import { execaCommand } from 'execa';
|
|
3
4
|
import { existsSync } from 'node:fs';
|
|
4
5
|
import upsert from '../patching/upsert.js';
|
|
5
6
|
import { getProfilePath } from './constants.js';
|
|
7
|
+
const debug = debuglog('xs-dev:homebrew');
|
|
6
8
|
function getBrewPath() {
|
|
7
9
|
if (os.arch() === 'arm64')
|
|
8
10
|
return '/opt/homebrew/bin';
|
|
@@ -17,7 +19,7 @@ export async function* ensureHomebrew(prompter) {
|
|
|
17
19
|
const homebrewEval = `eval "$(${brewPath}/brew shellenv)"`;
|
|
18
20
|
if (existsSync(brewPath)) {
|
|
19
21
|
process.env.PATH = `${brewPath}:${String(process.env.PATH)}`;
|
|
20
|
-
|
|
22
|
+
debug('Homebrew found in PATH');
|
|
21
23
|
return;
|
|
22
24
|
}
|
|
23
25
|
const shouldInstallBrew = await prompter.confirm(`The "brew" command is not available. Homebrew is required to install necessary dependencies. Would you like to setup Homebrew automatically?`);
|
|
@@ -53,9 +55,8 @@ export async function* ensureHomebrew(prompter) {
|
|
|
53
55
|
type: 'step:fail',
|
|
54
56
|
message: `Visit https://brew.sh/ to learn more about installing Homebrew. If you don't want to use Homebrew, please install the following packages manually before trying this command again.`,
|
|
55
57
|
};
|
|
56
|
-
return;
|
|
57
58
|
}
|
|
58
|
-
yield { type: 'info', message: 'Homebrew is available' }
|
|
59
|
+
// yield { type: 'info', message: 'Homebrew is available' }
|
|
59
60
|
}
|
|
60
61
|
catch (error) {
|
|
61
62
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -77,4 +78,4 @@ export async function formulaeExists(formulae) {
|
|
|
77
78
|
return false;
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWJyZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9ob21lYnJldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDcEMsT0FBTyxNQUFNLE1BQU0sdUJBQXVCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBSS9DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBRXpDLFNBQVMsV0FBVztJQUNsQixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxPQUFPO1FBQUUsT0FBTyxtQkFBbUIsQ0FBQTtJQUNyRCxPQUFPLGdCQUFnQixDQUFBO0FBQ3pCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQ25DLFFBQWtCO0lBRWxCLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFBO1FBRXhDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQTtZQUM5QixNQUFNLFlBQVksR0FBRyxXQUFXLFFBQVEsa0JBQWtCLENBQUE7WUFFMUQsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJ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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { stat } from 'node:fs/promises';
|
|
2
|
+
export async function exists(filePath) {
|
|
3
|
+
try {
|
|
4
|
+
await stat(filePath);
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (error instanceof Error)
|
|
12
|
+
throw error;
|
|
13
|
+
throw new Error(`Unable to check existence of file path: ${filePath}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function isDir(path) {
|
|
17
|
+
try {
|
|
18
|
+
return (await stat(path)).isDirectory();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export async function isFile(path) {
|
|
25
|
+
try {
|
|
26
|
+
return (await stat(path)).isFile();
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXN5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3N5c3RlbS9maWxlc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV2QyxNQUFNLENBQUMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxRQUFnQjtJQUMzQyxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN6RSxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFDRCxJQUFJLEtBQUssWUFBWSxLQUFLO1lBQUUsTUFBTSxLQUFLLENBQUE7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsS0FBSyxDQUFDLElBQVk7SUFDdEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDekMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { mkdir, readFile } from 'node:fs/promises';
|
|
2
|
-
import { existsSync, rmSync } from 'node:fs';
|
|
1
|
+
import { mkdir, readFile, rm } from 'node:fs/promises';
|
|
3
2
|
import { resolve, join } from 'node:path';
|
|
3
|
+
import { debuglog } from 'node:util';
|
|
4
4
|
import { execaCommand, execa } from 'execa';
|
|
5
5
|
import { INSTALL_DIR, EXPORTS_FILE_PATH, INSTALL_PATH, } from '../../setup/constants.js';
|
|
6
6
|
import { moddableExists, getModdableVersion } from '../../setup/moddable.js';
|
|
@@ -11,7 +11,9 @@ import { installLinuxDeps } from './linux.js';
|
|
|
11
11
|
import { installWinDeps } from './windows.js';
|
|
12
12
|
import { setEnv } from '../../setup/windows.js';
|
|
13
13
|
import { sourceEnvironment } from '../../system/exec.js';
|
|
14
|
+
import { exists } from '../../system/filesystem.js';
|
|
14
15
|
import { unwrapOr } from '../../system/errors.js';
|
|
16
|
+
const debug = debuglog('xs-dev:toolchains:esp32');
|
|
15
17
|
function getVersionSatisfies(version, range) {
|
|
16
18
|
const major = parseInt(version.split('.')[0], 10);
|
|
17
19
|
if (range === '>= 4.2.x')
|
|
@@ -29,7 +31,7 @@ export async function getExpectedEspIdfVersion() {
|
|
|
29
31
|
if (moddableExists()) {
|
|
30
32
|
try {
|
|
31
33
|
const manifestPath = resolve(INSTALL_PATH, 'build', 'devices', 'esp32', 'manifest.json');
|
|
32
|
-
if (
|
|
34
|
+
if (await exists(manifestPath)) {
|
|
33
35
|
const content = await readFile(manifestPath, 'utf-8');
|
|
34
36
|
const parsed = JSON.parse(content);
|
|
35
37
|
return parsed.build?.EXPECTED_ESP_IDF ?? null;
|
|
@@ -53,17 +55,16 @@ export const esp32Toolchain = {
|
|
|
53
55
|
const ESP32_DIR = resolve(INSTALL_DIR, 'esp32');
|
|
54
56
|
const IDF_PATH = resolve(ESP32_DIR, 'esp-idf');
|
|
55
57
|
await sourceEnvironment();
|
|
56
|
-
// 0. ensure Moddable exists
|
|
57
58
|
if (!moddableExists()) {
|
|
58
59
|
yield {
|
|
59
60
|
type: 'step:fail',
|
|
60
|
-
message: 'Moddable tooling required. Run `xs-dev setup` before trying again.',
|
|
61
|
+
message: 'Moddable platform tooling required. Run `xs-dev setup` before trying again.',
|
|
61
62
|
};
|
|
62
63
|
return;
|
|
63
64
|
}
|
|
64
65
|
// 1. ensure ~/.local/share/esp32 directory
|
|
65
66
|
try {
|
|
66
|
-
|
|
67
|
+
debug('Ensuring esp32 install directory');
|
|
67
68
|
await mkdir(ESP32_DIR, { recursive: true });
|
|
68
69
|
}
|
|
69
70
|
catch (error) {
|
|
@@ -74,9 +75,9 @@ export const esp32Toolchain = {
|
|
|
74
75
|
return;
|
|
75
76
|
}
|
|
76
77
|
// 2. clone esp-idf into ~/.local/share/esp32/esp-idf
|
|
77
|
-
if (!
|
|
78
|
+
if (!(await exists(IDF_PATH))) {
|
|
78
79
|
try {
|
|
79
|
-
|
|
80
|
+
debug('Cloning esp-idf repo');
|
|
80
81
|
const moddableVersionResult = await getModdableVersion();
|
|
81
82
|
const moddableVersion = unwrapOr(moddableVersionResult, '');
|
|
82
83
|
const expectedEspIdfVersion = await getExpectedEspIdfVersion();
|
|
@@ -85,8 +86,8 @@ export const esp32Toolchain = {
|
|
|
85
86
|
getVersionSatisfies(moddableVersion, '>= 4.2.x')
|
|
86
87
|
? ESP_BRANCH_V5
|
|
87
88
|
: ESP_BRANCH_V4);
|
|
88
|
-
await execaCommand(`git clone --depth 1 --single-branch -b ${branch} --
|
|
89
|
-
|
|
89
|
+
await execaCommand(`git clone --depth 1 --single-branch -b ${branch} --recurse-submodules --shallow-submodules ${ESP_IDF_REPO} ${IDF_PATH}`);
|
|
90
|
+
debug('ESP-IDF repo cloned');
|
|
90
91
|
}
|
|
91
92
|
catch (error) {
|
|
92
93
|
yield {
|
|
@@ -98,7 +99,7 @@ export const esp32Toolchain = {
|
|
|
98
99
|
}
|
|
99
100
|
// 3. Install build and run dependencies
|
|
100
101
|
try {
|
|
101
|
-
|
|
102
|
+
debug('Installing build dependencies');
|
|
102
103
|
if (ctx.platform === 'mac') {
|
|
103
104
|
for await (const event of installMacDeps(prompter)) {
|
|
104
105
|
yield event;
|
|
@@ -114,7 +115,7 @@ export const esp32Toolchain = {
|
|
|
114
115
|
yield event;
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
|
-
|
|
118
|
+
debug('Dependencies installed');
|
|
118
119
|
}
|
|
119
120
|
catch (error) {
|
|
120
121
|
yield {
|
|
@@ -126,16 +127,13 @@ export const esp32Toolchain = {
|
|
|
126
127
|
// 4. append IDF_PATH env export to shell profile
|
|
127
128
|
try {
|
|
128
129
|
if (isWindows) {
|
|
129
|
-
|
|
130
|
-
type: 'info',
|
|
131
|
-
message: 'Configuring IDF_PATH environment variable',
|
|
132
|
-
};
|
|
130
|
+
debug('Configuring IDF_PATH environment variable');
|
|
133
131
|
await setEnv('IDF_PATH', IDF_PATH);
|
|
134
132
|
}
|
|
135
133
|
else {
|
|
136
134
|
if (typeof process.env.IDF_PATH !== 'string' ||
|
|
137
135
|
process.env.IDF_PATH.length === 0) {
|
|
138
|
-
|
|
136
|
+
debug('Configuring $IDF_PATH');
|
|
139
137
|
process.env.IDF_PATH = IDF_PATH;
|
|
140
138
|
await upsert(EXPORTS_FILE_PATH, `export IDF_PATH=${IDF_PATH}`);
|
|
141
139
|
}
|
|
@@ -151,24 +149,19 @@ export const esp32Toolchain = {
|
|
|
151
149
|
// 5. cd to IDF_PATH, run install.sh
|
|
152
150
|
try {
|
|
153
151
|
if (isWindows) {
|
|
154
|
-
|
|
155
|
-
type: 'step:start',
|
|
156
|
-
message: 'Running ESP-IDF Tools install.bat',
|
|
157
|
-
};
|
|
152
|
+
debug('Running ESP-IDF Tools install.bat');
|
|
158
153
|
await execaCommand(`${IDF_PATH}\\install.bat`, {
|
|
159
154
|
cwd: IDF_PATH,
|
|
160
|
-
stdio: 'inherit',
|
|
161
155
|
});
|
|
162
|
-
|
|
156
|
+
debug('ESP-IDF tools installed');
|
|
163
157
|
}
|
|
164
158
|
else {
|
|
165
|
-
|
|
159
|
+
debug('Installing esp-idf tooling');
|
|
166
160
|
await execaCommand('./install.sh', {
|
|
167
161
|
cwd: IDF_PATH,
|
|
168
162
|
shell: process.env.SHELL ?? '/bin/bash',
|
|
169
|
-
stdio: 'inherit',
|
|
170
163
|
});
|
|
171
|
-
|
|
164
|
+
debug('ESP-IDF tools installed');
|
|
172
165
|
}
|
|
173
166
|
}
|
|
174
167
|
catch (error) {
|
|
@@ -204,18 +197,17 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
204
197
|
const ESP32_DIR = resolve(INSTALL_DIR, 'esp32');
|
|
205
198
|
const IDF_PATH = resolve(ESP32_DIR, 'esp-idf');
|
|
206
199
|
await sourceEnvironment();
|
|
207
|
-
yield { type: 'step:start', message: 'Updating esp32 tools' };
|
|
208
|
-
// 0. ensure Moddable exists
|
|
209
200
|
if (!moddableExists()) {
|
|
210
201
|
yield {
|
|
211
202
|
type: 'step:fail',
|
|
212
|
-
message: 'Moddable tooling required. Run `xs-dev setup` before trying again.',
|
|
203
|
+
message: 'Moddable platform tooling required. Run `xs-dev setup` before trying again.',
|
|
213
204
|
};
|
|
214
205
|
return;
|
|
215
206
|
}
|
|
207
|
+
yield { type: 'step:start', message: 'Updating esp32 tools' };
|
|
216
208
|
// 1. ensure esp32 directories exist
|
|
217
|
-
|
|
218
|
-
if (!
|
|
209
|
+
debug('Ensuring esp32 install directory');
|
|
210
|
+
if (!(await exists(ESP32_DIR)) || !(await exists(IDF_PATH))) {
|
|
219
211
|
yield {
|
|
220
212
|
type: 'step:fail',
|
|
221
213
|
message: 'ESP32 tooling required. Run `xs-dev setup --device esp32` before trying again.',
|
|
@@ -224,7 +216,7 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
224
216
|
}
|
|
225
217
|
// 2. update local esp-idf repo
|
|
226
218
|
try {
|
|
227
|
-
|
|
219
|
+
debug('Updating esp-idf repo');
|
|
228
220
|
const moddableVersionResult = await getModdableVersion();
|
|
229
221
|
const moddableVersion = unwrapOr(moddableVersionResult, '');
|
|
230
222
|
const expectedEspIdfVersion = await getExpectedEspIdfVersion();
|
|
@@ -246,7 +238,7 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
246
238
|
await execaCommand('git submodule update --init --recursive', {
|
|
247
239
|
cwd: IDF_PATH,
|
|
248
240
|
});
|
|
249
|
-
|
|
241
|
+
debug('esp-idf repo updated');
|
|
250
242
|
}
|
|
251
243
|
catch (error) {
|
|
252
244
|
yield {
|
|
@@ -257,7 +249,7 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
257
249
|
}
|
|
258
250
|
// 3. Install build and run dependencies
|
|
259
251
|
try {
|
|
260
|
-
|
|
252
|
+
debug('Installing build dependencies');
|
|
261
253
|
if (ctx.platform === 'mac') {
|
|
262
254
|
for await (const event of installMacDeps(prompter)) {
|
|
263
255
|
yield event;
|
|
@@ -268,7 +260,7 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
268
260
|
yield event;
|
|
269
261
|
}
|
|
270
262
|
}
|
|
271
|
-
|
|
263
|
+
debug('Dependencies rebuilt');
|
|
272
264
|
}
|
|
273
265
|
catch (error) {
|
|
274
266
|
yield {
|
|
@@ -280,7 +272,7 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
280
272
|
// 4. append IDF_PATH env export to shell profile
|
|
281
273
|
try {
|
|
282
274
|
if (process.env.IDF_PATH === undefined || process.env.IDF_PATH === '') {
|
|
283
|
-
|
|
275
|
+
debug('Configuring $IDF_PATH');
|
|
284
276
|
process.env.IDF_PATH = IDF_PATH;
|
|
285
277
|
await upsert(EXPORTS_FILE_PATH, `export IDF_PATH=${IDF_PATH}`);
|
|
286
278
|
}
|
|
@@ -302,19 +294,18 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
302
294
|
}
|
|
303
295
|
catch (error) {
|
|
304
296
|
yield {
|
|
305
|
-
type: '
|
|
297
|
+
type: 'warning',
|
|
306
298
|
message: `Note: Could not remove old IDF_PATH source: ${String(error)}`,
|
|
307
299
|
};
|
|
308
300
|
}
|
|
309
301
|
// 5. cd to IDF_PATH, run install.sh
|
|
310
302
|
try {
|
|
311
|
-
|
|
303
|
+
debug('Rebuilding esp-idf tooling');
|
|
312
304
|
await execaCommand('./install.sh', {
|
|
313
305
|
cwd: IDF_PATH,
|
|
314
306
|
shell: process.env.SHELL ?? '/bin/bash',
|
|
315
|
-
stdio: 'inherit',
|
|
316
307
|
});
|
|
317
|
-
|
|
308
|
+
debug('esp-idf tooling rebuilt successfully');
|
|
318
309
|
}
|
|
319
310
|
catch (error) {
|
|
320
311
|
yield {
|
|
@@ -325,14 +316,14 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
325
316
|
}
|
|
326
317
|
// 6. append 'source $IDF_PATH/export.sh' to shell profile
|
|
327
318
|
try {
|
|
328
|
-
|
|
319
|
+
debug('Sourcing esp-idf environment');
|
|
329
320
|
await upsert(EXPORTS_FILE_PATH, `source $IDF_PATH/export.sh 1> /dev/null\n`);
|
|
330
321
|
await execaCommand('source $IDF_PATH/export.sh', {
|
|
331
322
|
shell: process.env.SHELL ?? '/bin/bash',
|
|
332
323
|
});
|
|
333
324
|
}
|
|
334
325
|
catch (error) {
|
|
335
|
-
yield { type: '
|
|
326
|
+
yield { type: 'warning', message: `Note: ${String(error)}` };
|
|
336
327
|
}
|
|
337
328
|
// 7. Remove existing build output directories
|
|
338
329
|
try {
|
|
@@ -343,7 +334,7 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
343
334
|
}
|
|
344
335
|
catch (error) {
|
|
345
336
|
yield {
|
|
346
|
-
type: '
|
|
337
|
+
type: 'warning',
|
|
347
338
|
message: `Note: Could not clean build dirs: ${String(error)}`,
|
|
348
339
|
};
|
|
349
340
|
}
|
|
@@ -356,10 +347,9 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
356
347
|
},
|
|
357
348
|
async *teardown(_ctx, _prompter) {
|
|
358
349
|
try {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
yield { type: 'step:done' };
|
|
350
|
+
debug('Removing esp32 tooling');
|
|
351
|
+
await rm(join(INSTALL_DIR, 'esp32'), { recursive: true, force: true });
|
|
352
|
+
debug('esp32 toolchain removed');
|
|
363
353
|
}
|
|
364
354
|
catch (error) {
|
|
365
355
|
yield {
|
|
@@ -373,7 +363,7 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
373
363
|
if (process.env.IDF_PATH === undefined || process.env.IDF_PATH === '') {
|
|
374
364
|
missing.push('IDF_PATH env var not set');
|
|
375
365
|
}
|
|
376
|
-
else if (!
|
|
366
|
+
else if (!(await exists(process.env.IDF_PATH))) {
|
|
377
367
|
missing.push(`IDF_PATH path does not exist: ${process.env.IDF_PATH}`);
|
|
378
368
|
}
|
|
379
369
|
if (missing.length > 0) {
|
|
@@ -394,4 +384,4 @@ If there is trouble finding the correct port, pass the "--port" flag to the abov
|
|
|
394
384
|
return resolve(idfPath, 'export.sh');
|
|
395
385
|
},
|
|
396
386
|
};
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdG9vbGJveC90b29sY2hhaW5zL2VzcDMyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDM0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxHQUNiLE1BQU0sMEJBQTBCLENBQUE7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzVFLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxPQUFPLElBQUksYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBS2pELFNBQVMsbUJBQW1CLENBQUMsT0FBZSxFQUFFLEtBQWE7SUFDekQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxD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
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdG9vbGJveC90b29sY2hhaW5zL2VzcDMyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDM0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxHQUNiLE1BQU0sMEJBQTBCLENBQUE7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzVFLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxPQUFPLElBQUksYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUtqRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUVq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
|