xs-dev 0.27.2 → 0.27.4
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.
|
@@ -24,7 +24,7 @@ const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
|
24
24
|
async function default_1() {
|
|
25
25
|
const OS = (0, os_1.type)().toLowerCase();
|
|
26
26
|
const isWindows = OS === 'windows_nt';
|
|
27
|
-
const TOOLCHAIN = `https://github.com/Moddable-OpenSource/tools/releases/download/v1.0.0/esp8266.toolchain.${isWindows ? 'win32' : OS}
|
|
27
|
+
const TOOLCHAIN = `https://github.com/Moddable-OpenSource/tools/releases/download/v1.0.0/esp8266.toolchain.${isWindows ? 'win32' : OS}.${isWindows ? 'zip' : 'tgz'}`;
|
|
28
28
|
const ARDUINO_CORE = 'https://github.com/esp8266/Arduino/releases/download/2.3.0/esp8266-2.3.0.zip';
|
|
29
29
|
const ESP_RTOS_REPO = 'https://github.com/espressif/ESP8266_RTOS_SDK.git';
|
|
30
30
|
const ESP_BRANCH = 'release/v3.2';
|
|
@@ -49,13 +49,23 @@ async function default_1() {
|
|
|
49
49
|
// 2. download and untar xtensa toolchain
|
|
50
50
|
if (gluegun_1.filesystem.exists(TOOLCHAIN_PATH) === false) {
|
|
51
51
|
spinner.start('Downloading xtensa toolchain');
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
if (isWindows) {
|
|
53
|
+
const writer = (0, unzip_stream_1.Extract)({ path: ESP_DIR });
|
|
54
|
+
const response = await axios_1.default.get(TOOLCHAIN, {
|
|
55
|
+
responseType: 'stream',
|
|
56
|
+
});
|
|
57
|
+
response.data.pipe(writer);
|
|
58
|
+
await finishedPromise(writer);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const writer = (0, tar_fs_1.extract)(ESP_DIR, { readable: true });
|
|
62
|
+
const gunzip = (0, zlib_1.createGunzip)();
|
|
63
|
+
const response = await axios_1.default.get(TOOLCHAIN, {
|
|
64
|
+
responseType: 'stream',
|
|
65
|
+
});
|
|
66
|
+
response.data.pipe(gunzip).pipe(writer);
|
|
67
|
+
await finishedPromise(writer);
|
|
68
|
+
}
|
|
59
69
|
spinner.succeed();
|
|
60
70
|
}
|
|
61
71
|
// 3. download and unzip esp8266 core for arduino
|
|
@@ -106,4 +116,4 @@ async function default_1() {
|
|
|
106
116
|
`);
|
|
107
117
|
}
|
|
108
118
|
exports.default = default_1;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwODI2Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQXlCO0FBQ3pCLG1DQUFpQztBQUNqQywrQkFBZ0M7QUFDaEMsbUNBQWdDO0FBQ2hDLCtCQUFtQztBQUNuQywrQ0FBb0Q7QUFDcEQsMkJBQXlDO0FBQ3pDLDJDQUE0RDtBQUM1RCx5Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBQ3ZDLHVDQUE2RDtBQUM3RCwyQ0FBaUU7QUFDakUsK0NBQXFFO0FBQ3JFLHVDQUF1RDtBQUN2RCwrQ0FBZ0Q7QUFFaEQseUNBQWtEO0FBRWxELE1BQU0sZUFBZSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxpQkFBUSxDQUFDLENBQUE7QUFFNUIsS0FBSztJQUNsQixNQUFNLEVBQUUsR0FBRyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBWSxDQUFBO0lBQ2pELE1BQU0sU0FBUyxHQUFHLEVBQUUsS0FBSyxZQUFZLENBQUE7SUFDckMsTUFBTSxTQUFTLEdBQUcsMkZBQ2hCLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUN4QixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMvQixNQUFNLFlBQVksR0FDaEIsOEVBQThFLENBQUE7SUFDaEYsTUFBTSxhQUFhLEdBQUcsbURBQW1ELENBQUE7SUFDekUsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFBO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDdEQsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDakUsTUFBTSxjQUFjLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQy9ELE1BQU0saUJBQWlCLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFBO0lBRXRFLE1BQU0sSUFBQSx3QkFBaUIsR0FBRSxDQUFBO0lBRXpCLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFFekMsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRTtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUNWLHlEQUF5RCxzQkFBWSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FDbEcsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0sSUFBQSxxQ0FBMkIsRUFBQyxPQUFPLENBQUMsQ0FBQTtLQUMzQztJQUVELHlDQUF5QztJQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDMUMsb0JBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFdkIseUNBQXlDO0lBQ3pDLElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUU3QyxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQVUsRUFBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7Z0JBQzFDLFlBQVksRUFBRSxRQUFRO2FBQ3ZCLENBQUMsQ0FBQTtZQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzFCLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQzlCO2FBQU07WUFDTCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdCQUFPLEVBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7WUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBWSxHQUFFLENBQUE7WUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRTtnQkFDMUMsWUFBWSxFQUFFLFFBQVE7YUFDdkIsQ0FBQyxDQUFBO1lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3ZDLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQzlCO1FBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsaURBQWlEO0lBQ2pELElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDbEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQVUsRUFBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUU7WUFDN0MsWUFBWSxFQUFFLFFBQVE7U0FDdkIsQ0FBQyxDQUFBO1FBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUIsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsNEJBQTRCO0lBQzVCLElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQTtRQUM5QyxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQiwwQ0FBMEMsVUFBVSxJQUFJLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FDckYsQ0FBQTtRQUNELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtLQUNsQjtJQUVELG9EQUFvRDtJQUNwRCxJQUFJLEVBQUUsS0FBSyxRQUFRLEVBQUU7UUFDbkIsTUFBTSxJQUFBLGlCQUFjLEVBQUMsT0FBTyxDQUFDLENBQUE7S0FDOUI7SUFFRCxJQUFJLEVBQUUsS0FBSyxPQUFPLEVBQUU7UUFDbEIsTUFBTSxJQUFBLG1CQUFnQixFQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQ2hDO0lBRUQsSUFBSSxTQUFTLEVBQUU7UUFDYixJQUFJO1lBQ0YsTUFBTSxJQUFBLHFCQUFrQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUMzQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsZUFBSyxDQUFDLEtBQUssQ0FDVCw4RUFBOEUsQ0FDL0UsQ0FBQTtZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7S0FDRjtJQUVELGlEQUFpRDtJQUNqRCxJQUFJLEVBQUUsS0FBSyxRQUFRLElBQUksRUFBRSxLQUFLLE9BQU8sRUFBRTtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUE7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO1lBQzlCLE1BQU0sSUFBQSxnQkFBTSxFQUFDLDZCQUFpQixFQUFFLG1CQUFtQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7U0FDM0U7S0FDRixDQUFDLGtEQUFrRDtJQUVwRCxPQUFPLENBQUMsT0FBTyxDQUFDOzt5Q0FHZCxTQUFTLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxrQkFDMUM7O0dBRUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQXBIRCw0QkFvSEMifQ==
|
|
@@ -21,8 +21,7 @@ function moddableExists() {
|
|
|
21
21
|
const debugTools = gluegun_1.filesystem.exists(gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', platformDir, 'debug'));
|
|
22
22
|
return (process.env.MODDABLE !== undefined &&
|
|
23
23
|
gluegun_1.filesystem.exists(process.env.MODDABLE) === 'dir' &&
|
|
24
|
-
releaseTools === 'dir'
|
|
25
|
-
debugTools === 'dir');
|
|
24
|
+
(releaseTools === 'dir' || debugTools === 'dir'));
|
|
26
25
|
}
|
|
27
26
|
exports.moddableExists = moddableExists;
|
|
28
27
|
async function getModdableVersion() {
|
|
@@ -31,16 +30,16 @@ async function getModdableVersion() {
|
|
|
31
30
|
cwd: process.env.MODDABLE,
|
|
32
31
|
});
|
|
33
32
|
const tag = tags.split('\n').shift();
|
|
34
|
-
if (tag === undefined)
|
|
35
|
-
return null;
|
|
36
|
-
const tagCommit = await gluegun_1.system.run(`git rev-list -n 1 ${tag}`, {
|
|
37
|
-
cwd: process.env.MODDABLE,
|
|
38
|
-
});
|
|
39
33
|
const latestCommit = await gluegun_1.system.run(`git rev-parse HEAD`, {
|
|
40
34
|
cwd: process.env.MODDABLE,
|
|
41
35
|
});
|
|
42
|
-
if (
|
|
43
|
-
|
|
36
|
+
if (tag !== undefined && tag.length > 0) {
|
|
37
|
+
const tagCommit = await gluegun_1.system.run(`git rev-list -n 1 ${tag}`, {
|
|
38
|
+
cwd: process.env.MODDABLE,
|
|
39
|
+
});
|
|
40
|
+
if (tagCommit === latestCommit)
|
|
41
|
+
return tag;
|
|
42
|
+
}
|
|
44
43
|
const currentBranch = await gluegun_1.system.run(`git branch --show-current`, {
|
|
45
44
|
cwd: process.env.MODDABLE,
|
|
46
45
|
});
|
|
@@ -79,4 +78,4 @@ async function downloadReleaseTools({ writePath, assetName, release, }) {
|
|
|
79
78
|
await finishedPromise(zipWriter);
|
|
80
79
|
}
|
|
81
80
|
exports.downloadReleaseTools = downloadReleaseTools;
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9tb2RkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBeUM7QUFDekMsbUNBQWlDO0FBQ2pDLCtCQUFnQztBQUNoQyxxQ0FBNEM7QUFDNUMsd0NBQWdFO0FBQ2hFLCtDQUFvRDtBQUNwRCxrREFBeUI7QUFDekIsMkNBQTBDO0FBRTFDLCtDQUFnRDtBQUVoRCxNQUFNLGVBQWUsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQVEsQ0FBQyxDQUFBO0FBRTNDLFNBQWdCLGNBQWM7SUFDNUIsTUFBTSxFQUFFLEdBQUcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQTtJQUNqRCxNQUFNLFdBQVcsR0FBRyxzQkFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3BDLE1BQU0sWUFBWSxHQUFHLG9CQUFVLENBQUMsTUFBTSxDQUNwQyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx3QkFBWSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUN6RSxDQUFBO0lBQ0QsTUFBTSxVQUFVLEdBQUcsb0JBQVUsQ0FBQyxNQUFNLENBQ2xDLG9CQUFVLENBQUMsT0FBTyxDQUFDLHdCQUFZLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQ3ZFLENBQUE7SUFDRCxPQUFPLENBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUztRQUNsQyxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUs7UUFDakQsQ0FBQyxZQUFZLEtBQUssS0FBSyxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsQ0FDakQsQ0FBQTtBQUNILENBQUM7QUFkRCx3Q0FjQztBQUVNLEtBQUssVUFBVSxrQkFBa0I7SUFDdEMs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
|