xs-dev 0.15.1 → 0.18.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/README.md +1 -1
- package/bin/xs-dev +3 -4
- package/build/commands/build.js +30 -0
- package/build/commands/run.js +15 -124
- package/build/commands/setup.js +3 -3
- package/build/commands/update.js +3 -3
- package/build/extensions/build-extension.js +7 -0
- package/build/toolbox/build/index.js +145 -0
- package/build/toolbox/setup/constants.js +10 -3
- package/build/toolbox/setup/esp32/windows.js +42 -0
- package/build/toolbox/setup/esp32.js +48 -19
- package/build/toolbox/setup/esp8266/windows.js +84 -0
- package/build/toolbox/setup/esp8266.js +44 -16
- package/build/toolbox/setup/linux.js +45 -7
- package/build/toolbox/setup/mac.js +51 -12
- package/build/toolbox/setup/moddable.js +35 -2
- package/build/toolbox/setup/types.js +3 -0
- package/build/toolbox/setup/windows.js +167 -3
- package/build/toolbox/update/linux.js +92 -31
- package/build/toolbox/update/mac.js +80 -26
- package/build/types/commands/build.d.ts +4 -0
- package/build/types/extensions/build-extension.d.ts +3 -0
- package/build/types/toolbox/build/index.d.ts +13 -0
- package/build/types/toolbox/setup/esp32/windows.d.ts +3 -0
- package/build/types/toolbox/setup/esp8266/windows.d.ts +3 -0
- package/build/types/toolbox/setup/linux.d.ts +2 -1
- package/build/types/toolbox/setup/mac.d.ts +2 -1
- package/build/types/toolbox/setup/moddable.d.ts +11 -0
- package/build/types/toolbox/setup/types.d.ts +3 -0
- package/build/types/toolbox/setup/windows.d.ts +7 -1
- package/build/types/toolbox/update/linux.d.ts +2 -1
- package/build/types/toolbox/update/mac.d.ts +2 -1
- package/build/types/types.d.ts +5 -2
- package/docs/public/run-hello-world.png +0 -0
- package/docs/src/components/HeadCommon.astro +4 -13
- package/docs/src/components/HeadSEO.astro +2 -8
- package/docs/src/components/Header/Header.astro +1 -1
- package/docs/src/components/LeftSidebar/LeftSidebar.astro +1 -1
- package/docs/src/components/RightSidebar/RightSidebar.astro +2 -3
- package/docs/src/components/RightSidebar/TableOfContents.tsx +50 -43
- package/docs/src/config.ts +3 -0
- package/docs/src/layouts/MainLayout.astro +3 -3
- package/docs/src/pages/en/features/run.md +29 -2
- package/docs/src/pages/en/features/setup.md +13 -1
- package/docs/src/pages/en/features/update.md +16 -0
- package/docs/src/pages/en/guide/00-prepare.md +54 -0
- package/docs/src/pages/en/guide/01-hello-console.md +62 -0
- package/docs/tsconfig.json +3 -1
- package/package.json +12 -9
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.installDeps = exports.installPython = void 0;
|
|
7
|
+
const gluegun_1 = require("gluegun");
|
|
8
|
+
const stream_1 = require("stream");
|
|
9
|
+
const axios_1 = __importDefault(require("axios"));
|
|
10
|
+
const unzip_stream_1 = require("unzip-stream");
|
|
11
|
+
const util_1 = require("util");
|
|
12
|
+
const windows_1 = require("../windows");
|
|
13
|
+
const constants_1 = require("../constants");
|
|
14
|
+
const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
15
|
+
const ESP_TOOL = 'https://github.com/igrr/esptool-ck/releases/download/0.4.13/esptool-0.4.13-win32.zip';
|
|
16
|
+
const ESP_TOOL_VERSION = 'esptool-0.4.13-win32';
|
|
17
|
+
const CYGWIN = 'https://www.dropbox.com/s/ub7xehxbf747eu1/cygwin.win32.zip?dl=1';
|
|
18
|
+
async function installPython(spinner) {
|
|
19
|
+
if (gluegun_1.system.which('python') === null) {
|
|
20
|
+
// For some reason, system.which does not work with winget. This is a workaround for now.
|
|
21
|
+
try {
|
|
22
|
+
await gluegun_1.system.exec('where winget');
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
gluegun_1.print.error('Python is required.');
|
|
26
|
+
gluegun_1.print.info('You can download and install Python from python.org/downloads');
|
|
27
|
+
gluegun_1.print.info('Or xs-dev can manage installing Python and other dependencies using the Windows Package Manager Client (winget).');
|
|
28
|
+
gluegun_1.print.info('You can install winget via the App Installer package in the Microsoft Store.');
|
|
29
|
+
gluegun_1.print.info('Please install either Python or winget, then launch a new Command Prompt and re-run this setup.');
|
|
30
|
+
throw new Error('Python is required');
|
|
31
|
+
}
|
|
32
|
+
spinner.start('Installing python from winget');
|
|
33
|
+
await gluegun_1.system.exec('winget install -e --id Python.Python.3 --silent');
|
|
34
|
+
spinner.succeed();
|
|
35
|
+
gluegun_1.print.info('Python successfully installed. Please close this window and launch a new Moddable Command Prompt to refresh environment variables, then re-run this setup.');
|
|
36
|
+
throw new Error('Command Prompt restart needed');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.installPython = installPython;
|
|
40
|
+
async function installDeps(spinner, ESP_DIR) {
|
|
41
|
+
const ESP_TOOL_DIR = gluegun_1.filesystem.resolve(ESP_DIR, ESP_TOOL_VERSION);
|
|
42
|
+
const ESP_TOOL_EXE = gluegun_1.filesystem.resolve(ESP_TOOL_DIR, 'esptool.exe');
|
|
43
|
+
const ESP_TOOL_DESTINATION = gluegun_1.filesystem.resolve(ESP_DIR, 'esptool.exe');
|
|
44
|
+
const CYGWIN_BIN = gluegun_1.filesystem.resolve(ESP_DIR, 'cygwin', 'bin');
|
|
45
|
+
spinner.start('Downloading ESP Tool');
|
|
46
|
+
let writer = (0, unzip_stream_1.Extract)({ path: ESP_DIR });
|
|
47
|
+
let response = await axios_1.default.get(ESP_TOOL, {
|
|
48
|
+
responseType: 'stream',
|
|
49
|
+
});
|
|
50
|
+
response.data.pipe(writer);
|
|
51
|
+
await finishedPromise(writer);
|
|
52
|
+
gluegun_1.filesystem.move(ESP_TOOL_EXE, ESP_TOOL_DESTINATION, { overwrite: true });
|
|
53
|
+
gluegun_1.filesystem.remove(ESP_TOOL_DIR);
|
|
54
|
+
spinner.succeed();
|
|
55
|
+
spinner.start('Downloading Cygwin toolchain support package');
|
|
56
|
+
writer = (0, unzip_stream_1.Extract)({ path: ESP_DIR });
|
|
57
|
+
response = await axios_1.default.get(CYGWIN, {
|
|
58
|
+
responseType: 'stream',
|
|
59
|
+
});
|
|
60
|
+
response.data.pipe(writer);
|
|
61
|
+
await finishedPromise(writer);
|
|
62
|
+
spinner.succeed();
|
|
63
|
+
spinner.start('Setting environment variables');
|
|
64
|
+
await (0, windows_1.setEnv)('BASE_DIR', constants_1.INSTALL_DIR);
|
|
65
|
+
await (0, windows_1.addToPath)(CYGWIN_BIN);
|
|
66
|
+
spinner.succeed();
|
|
67
|
+
try {
|
|
68
|
+
await installPython(spinner);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
// Command Prompt restart needed
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
if (gluegun_1.system.which('pip') === null) {
|
|
75
|
+
spinner.start('Installing pip through ensurepip');
|
|
76
|
+
await gluegun_1.system.exec('python -m ensurepip');
|
|
77
|
+
spinner.succeed();
|
|
78
|
+
}
|
|
79
|
+
spinner.start('Installing pyserial through pip');
|
|
80
|
+
await gluegun_1.system.exec('python -m pip install pyserial');
|
|
81
|
+
spinner.succeed();
|
|
82
|
+
}
|
|
83
|
+
exports.installDeps = installDeps;
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYvd2luZG93cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsbUNBQWlDO0FBQ2pDLGtEQUF5QjtBQUV6QiwrQ0FBb0Q7QUFDcEQsK0JBQWdDO0FBQ2hDLHdDQUE4QztBQUM5Qyw0Q0FBMEM7QUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQkFBUyxFQUFDLGlCQUFRLENBQUMsQ0FBQTtBQUUzQyxNQUFNLFFBQVEsR0FDWixzRkFBc0YsQ0FBQTtBQUN4RixNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFBO0FBQy9DLE1BQU0sTUFBTSxHQUFHLGlFQUFpRSxDQUFBO0FBRXpFLEtBQUssVUFBVSxhQUFhLENBQ2pDLE9BQXlDO0lBRXpDLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ25DLHlGQUF5RjtRQUN6RixJQUFJO1lBQ0YsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtTQUNsQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsZUFBSyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBQ2xDLGVBQUssQ0FBQyxJQUFJLENBQ1IsK0RBQStELENBQ2hFLENBQUE7WUFDRCxlQUFLLENBQUMsSUFBSSxDQUNSLGtIQUFrSCxDQUNuSCxDQUFBO1lBQ0QsZUFBSyxDQUFDLElBQUksQ0FDUiw4RUFBOEUsQ0FDL0UsQ0FBQTtZQUNELGVBQUssQ0FBQyxJQUFJLENBQ1IsaUdBQWlHLENBQ2xHLENBQUE7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7U0FDdEM7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUE7UUFDOUMsTUFBTSxnQkFBTSxDQUFDLElB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
|
|
@@ -16,10 +16,15 @@ const moddable_1 = require("./moddable");
|
|
|
16
16
|
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
17
17
|
const mac_1 = require("./esp8266/mac");
|
|
18
18
|
const linux_1 = require("./esp8266/linux");
|
|
19
|
+
const windows_1 = require("./esp8266/windows");
|
|
20
|
+
const windows_2 = require("./windows");
|
|
19
21
|
const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
20
22
|
async function default_1() {
|
|
21
23
|
const OS = (0, os_1.type)().toLowerCase();
|
|
22
|
-
const
|
|
24
|
+
const isWindows = OS === 'windows_nt';
|
|
25
|
+
const TOOLCHAIN = isWindows
|
|
26
|
+
? 'https://www.dropbox.com/s/edbtq6oi1up623i/esp8266.toolchain.win32.zip?dl=1'
|
|
27
|
+
: `https://www.moddable.com/private/esp8266.toolchain.${OS}.tgz`;
|
|
23
28
|
const ARDUINO_CORE = 'https://github.com/esp8266/Arduino/releases/download/2.3.0/esp8266-2.3.0.zip';
|
|
24
29
|
const ESP_RTOS_REPO = 'https://github.com/espressif/ESP8266_RTOS_SDK.git';
|
|
25
30
|
const ESP_BRANCH = 'release/v3.2';
|
|
@@ -34,19 +39,31 @@ async function default_1() {
|
|
|
34
39
|
spinner.fail('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
35
40
|
process.exit(1);
|
|
36
41
|
}
|
|
42
|
+
if (isWindows)
|
|
43
|
+
await (0, windows_2.ensureModdableCommandPrompt)(spinner);
|
|
37
44
|
// 1. ensure ~/.local/share/esp directory
|
|
38
45
|
spinner.info('Ensuring esp directory');
|
|
39
46
|
gluegun_1.filesystem.dir(ESP_DIR);
|
|
40
47
|
// 2. download and untar xtensa toolchain
|
|
41
48
|
if (gluegun_1.filesystem.exists(TOOLCHAIN_PATH) === false) {
|
|
42
49
|
spinner.start('Downloading xtensa toolchain');
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
if (isWindows) {
|
|
51
|
+
const writer = (0, unzip_stream_1.Extract)({ path: ESP_DIR });
|
|
52
|
+
const response = await axios_1.default.get(TOOLCHAIN, {
|
|
53
|
+
responseType: 'stream',
|
|
54
|
+
});
|
|
55
|
+
response.data.pipe(writer);
|
|
56
|
+
await finishedPromise(writer);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const writer = (0, tar_fs_1.extract)(ESP_DIR, { readable: true });
|
|
60
|
+
const gunzip = (0, zlib_1.createGunzip)();
|
|
61
|
+
const response = await axios_1.default.get(TOOLCHAIN, {
|
|
62
|
+
responseType: 'stream',
|
|
63
|
+
});
|
|
64
|
+
response.data.pipe(gunzip).pipe(writer);
|
|
65
|
+
await finishedPromise(writer);
|
|
66
|
+
}
|
|
50
67
|
spinner.succeed();
|
|
51
68
|
}
|
|
52
69
|
// 3. download and unzip esp8266 core for arduino
|
|
@@ -73,17 +90,28 @@ async function default_1() {
|
|
|
73
90
|
if (OS === 'linux') {
|
|
74
91
|
await (0, linux_1.installDeps)(spinner);
|
|
75
92
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
93
|
+
if (isWindows) {
|
|
94
|
+
try {
|
|
95
|
+
await (0, windows_1.installDeps)(spinner, ESP_DIR);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
gluegun_1.print.error(`Windows dependencies failed to install. Please review the information above.`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
81
101
|
}
|
|
102
|
+
// 7. create ESP_BASE env export in shell profile
|
|
103
|
+
if (OS === 'darwin' || OS === 'linux') {
|
|
104
|
+
if (process.env.ESP_BASE === undefined) {
|
|
105
|
+
spinner.info('Configuring $ESP_BASE');
|
|
106
|
+
process.env.ESP_BASE = ESP_DIR;
|
|
107
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export ESP_BASE=${process.env.ESP_BASE}`);
|
|
108
|
+
}
|
|
109
|
+
} // Windows case is handled in ./esp8266/windows.ts
|
|
82
110
|
spinner.succeed(`
|
|
83
|
-
Successfully set up esp8266 platform support for
|
|
84
|
-
Test out the setup by starting a new terminal session, plugging in your device, and running: xs-dev run --example helloworld --device esp8266
|
|
111
|
+
Successfully set up esp8266 platform support for Moddable!
|
|
112
|
+
Test out the setup by starting a new ${isWindows ? 'Moddable Command Prompt' : 'terminal session'}, plugging in your device, and running: xs-dev run --example helloworld --device esp8266
|
|
85
113
|
If there is trouble finding the correct port, pass the "--port" flag to the above command with the path to the "/dev.cu.*" that matches your device.
|
|
86
114
|
`);
|
|
87
115
|
}
|
|
88
116
|
exports.default = default_1;
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwODI2Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQXlCO0FBQ3pCLG1DQUFpQztBQUNqQywrQkFBZ0M7QUFDaEMsbUNBQWdDO0FBQ2hDLCtCQUFtQztBQUNuQywrQ0FBb0Q7QUFDcEQsMkJBQXlDO0FBQ3pDLDJDQUE0RDtBQUM1RCx5Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBQ3ZDLHVDQUE2RDtBQUM3RCwyQ0FBaUU7QUFDakUsK0NBQXFFO0FBQ3JFLHVDQUF1RDtBQUV2RCxNQUFNLGVBQWUsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQVEsQ0FBQyxDQUFBO0FBRTVCLEtBQUs7SUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN2QyxNQUFNLFNBQVMsR0FBRyxFQUFFLEtBQUssWUFBWSxDQUFBO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFNBQVM7UUFDekIsQ0FBQyxDQUFDLDRFQUE0RTtRQUM5RSxDQUFDLENBQUMsc0RBQXNELEVBQUUsTUFBTSxDQUFBO0lBQ2xFLE1BQU0sWUFBWSxHQUNoQiw4RUFBOEUsQ0FBQTtJQUNoRixNQUFNLGFBQWEsR0FBRyxtREFBbUQsQ0FBQTtJQUN6RSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUE7SUFDakMsTUFBTSxPQUFPLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0RCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUNqRSxNQUFNLGNBQWMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFFdEUsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUV6Qyw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0VBQW9FLENBQ3JFLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxTQUFTO1FBQUUsTUFBTSxJQUFBLHFDQUEyQixFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRXpELHlDQUF5QztJQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDdEMsb0JBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFdkIseUNBQXlDO0lBQ3pDLElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUU3QyxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQVUsRUFBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7Z0JBQzFDLFlBQVksRUFBRSxRQUFRO2FBQ3ZCLENBQUMsQ0FBQTtZQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzFCLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQzlCO2FBQU07WUFDTCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdCQUFPLEVBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7WUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBWSxHQUFFLENBQUE7WUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRTtnQkFDMUMsWUFBWSxFQUFFLFFBQVE7YUFDdkIsQ0FBQyxDQUFBO1lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3ZDLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQzlCO1FBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsaURBQWlEO0lBQ2pELElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDbEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQVUsRUFBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUU7WUFDN0MsWUFBWSxFQUFFLFFBQVE7U0FDdkIsQ0FBQyxDQUFBO1FBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUIsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsNEJBQTRCO0lBQzVCLElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQTtRQUM5QyxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQixnQkFBZ0IsVUFBVSxJQUFJLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FDM0QsQ0FBQTtRQUNELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtLQUNsQjtJQUVELG9EQUFvRDtJQUNwRCxJQUFJLEVBQUUsS0FBSyxRQUFRLEVBQUU7UUFDbkIsTUFBTSxJQUFBLGlCQUFjLEVBQUMsT0FBTyxDQUFDLENBQUE7S0FDOUI7SUFFRCxJQUFJLEVBQUUsS0FBSyxPQUFPLEVBQUU7UUFDbEIsTUFBTSxJQUFBLG1CQUFnQixFQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQ2hDO0lBRUQsSUFBSSxTQUFTLEVBQUU7UUFDYixJQUFJO1lBQ0YsTUFBTSxJQUFBLHFCQUFrQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUMzQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsZUFBSyxDQUFDLEtBQUssQ0FDVCw4RUFBOEUsQ0FDL0UsQ0FBQTtZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7S0FDRjtJQUVELGlEQUFpRDtJQUNqRCxJQUFJLEVBQUUsS0FBSyxRQUFRLElBQUksRUFBRSxLQUFLLE9BQU8sRUFBRTtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUE7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO1lBQzlCLE1BQU0sSUFBQSxnQkFBTSxFQUFDLDZCQUFpQixFQUFFLG1CQUFtQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7U0FDM0U7S0FDRixDQUFDLGtEQUFrRDtJQUVwRCxPQUFPLENBQUMsT0FBTyxDQUFDOzt5Q0FHZCxTQUFTLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxrQkFDMUM7O0dBRUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQWhIRCw0QkFnSEMifQ==
|
|
@@ -3,13 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const os_1 = __importDefault(require("os"));
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const fs_1 = require("fs");
|
|
6
9
|
const gluegun_1 = require("gluegun");
|
|
7
10
|
const constants_1 = require("./constants");
|
|
8
11
|
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
9
12
|
const exec_1 = require("../system/exec");
|
|
10
|
-
|
|
13
|
+
const moddable_1 = require("./moddable");
|
|
14
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
15
|
+
async function default_1({ targetBranch }) {
|
|
16
|
+
var _a;
|
|
11
17
|
gluegun_1.print.info('Setting up Linux tools!');
|
|
12
18
|
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
|
|
19
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
|
|
13
20
|
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
|
|
14
21
|
const PROFILE_PATH = (0, constants_1.getProfilePath)();
|
|
15
22
|
const spinner = gluegun_1.print.spin();
|
|
@@ -32,8 +39,32 @@ async function default_1() {
|
|
|
32
39
|
spinner.info('Moddable repo already installed');
|
|
33
40
|
}
|
|
34
41
|
else {
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
if (targetBranch === 'latest-release') {
|
|
43
|
+
spinner.start('Getting latest Moddable-OpenSource/moddable release');
|
|
44
|
+
const release = await (0, moddable_1.fetchLatestRelease)();
|
|
45
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${release.tag_name} --single-branch`);
|
|
46
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
47
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
48
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
49
|
+
const assetName = isArm
|
|
50
|
+
? 'moddable-tools-lin64arm.zip'
|
|
51
|
+
: 'moddable-tools-lin64.zip';
|
|
52
|
+
spinner.info('Downloading release tools');
|
|
53
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
54
|
+
writePath: BIN_PATH,
|
|
55
|
+
assetName,
|
|
56
|
+
release,
|
|
57
|
+
});
|
|
58
|
+
const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
|
|
59
|
+
await Promise.all(tools.map(async (tool) => {
|
|
60
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
61
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
if (targetBranch === 'public') {
|
|
65
|
+
spinner.start('Cloning Moddable-OpenSource/moddable repo');
|
|
66
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${targetBranch} --single-branch`);
|
|
67
|
+
}
|
|
37
68
|
spinner.succeed();
|
|
38
69
|
}
|
|
39
70
|
// 4. Setup the MODDABLE environment variable
|
|
@@ -43,11 +74,18 @@ async function default_1() {
|
|
|
43
74
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
|
|
44
75
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
|
|
45
76
|
// 5. Build the Moddable command line tools, simulator, and debugger from the command line:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
77
|
+
if (targetBranch === 'public') {
|
|
78
|
+
spinner.start('Building platform tooling');
|
|
79
|
+
await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
|
|
80
|
+
spinner.succeed();
|
|
81
|
+
}
|
|
49
82
|
// 6. Install the desktop simulator and xsbug debugger applications
|
|
50
83
|
spinner.start('Installing simulator');
|
|
84
|
+
if (targetBranch === 'latest-release') {
|
|
85
|
+
gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
|
|
86
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
|
|
87
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
|
|
88
|
+
}
|
|
51
89
|
await (0, exec_1.execWithSudo)('make install', {
|
|
52
90
|
cwd: BUILD_DIR,
|
|
53
91
|
stdout: process.stdout,
|
|
@@ -57,4 +95,4 @@ async function default_1() {
|
|
|
57
95
|
gluegun_1.print.success('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
|
|
58
96
|
}
|
|
59
97
|
exports.default = default_1;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9saW51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLHFDQUFtRDtBQUNuRCwyQ0FNb0I7QUFDcEIsZ0VBQXVDO0FBQ3ZDLHlDQUE2QztBQUU3Qyx5Q0FBcUU7QUFFckUsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQkFBUyxFQUFDLFVBQUssQ0FBQyxDQUFBO0FBRXRCLEtBQUssb0JBQVcsRUFBRSxZQUFZLEVBQWE7O0lBQ3hELGVBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDakMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLENBQ1YsQ0FBQTtJQUNELE1BQU0sY0FBYyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUN2Qyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sQ0FDUixDQUFBO0lBQ0QsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2xDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ04sQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUFHLElBQUEsMEJBQWMsR0FBRSxDQUFBO0lBRXJDLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFFbkMsK0VBQStFO0lBQy9FLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtJQUUzQixNQUFNLElBQUEsZ0JBQU0sRUFBQyw2QkFBaUIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFBO0lBRTVELHlEQUF5RDtJQUN6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
|
|
@@ -4,11 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const gluegun_1 = require("gluegun");
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const util_1 = require("util");
|
|
9
|
+
const fs_1 = require("fs");
|
|
7
10
|
const constants_1 = require("./constants");
|
|
8
11
|
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
9
|
-
|
|
12
|
+
const moddable_1 = require("./moddable");
|
|
13
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
14
|
+
async function default_1({ targetBranch }) {
|
|
15
|
+
var _a;
|
|
10
16
|
gluegun_1.print.info('Setting up the mac tools!');
|
|
11
17
|
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'release');
|
|
18
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'debug');
|
|
12
19
|
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'mac');
|
|
13
20
|
const PROFILE_PATH = (0, constants_1.getProfilePath)();
|
|
14
21
|
// 0. ensure xcode command line tools are available (?)
|
|
@@ -35,8 +42,38 @@ async function default_1() {
|
|
|
35
42
|
}
|
|
36
43
|
else {
|
|
37
44
|
try {
|
|
38
|
-
|
|
39
|
-
|
|
45
|
+
if (targetBranch === 'latest-release') {
|
|
46
|
+
spinner.start('Getting latest Moddable-OpenSource/moddable release');
|
|
47
|
+
const release = await (0, moddable_1.fetchLatestRelease)();
|
|
48
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${release.tag_name} --single-branch`);
|
|
49
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
50
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
51
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
52
|
+
const assetName = isArm
|
|
53
|
+
? 'moddable-tools-mac64arm.zip'
|
|
54
|
+
: 'moddable-tools-mac64.zip';
|
|
55
|
+
spinner.info('Downloading release tools');
|
|
56
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
57
|
+
writePath: BIN_PATH,
|
|
58
|
+
assetName,
|
|
59
|
+
release,
|
|
60
|
+
});
|
|
61
|
+
const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
|
|
62
|
+
await Promise.all(tools.map(async (tool) => {
|
|
63
|
+
if (tool.endsWith('.app')) {
|
|
64
|
+
const mainPath = gluegun_1.filesystem.resolve(BIN_PATH, tool, 'Contents', 'MacOS', 'main');
|
|
65
|
+
await chmodPromise(mainPath, 0o751);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
69
|
+
}
|
|
70
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
if (targetBranch === 'public') {
|
|
74
|
+
spinner.start('Cloning Moddable-OpenSource/moddable repo');
|
|
75
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${targetBranch} --single-branch`);
|
|
76
|
+
}
|
|
40
77
|
spinner.succeed();
|
|
41
78
|
}
|
|
42
79
|
catch (error) {
|
|
@@ -51,14 +88,16 @@ async function default_1() {
|
|
|
51
88
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
|
|
52
89
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
|
|
53
90
|
// 3. cd into makefiles dir for platform, run `make`
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
91
|
+
if (targetBranch === 'public') {
|
|
92
|
+
try {
|
|
93
|
+
spinner.start('Building platform tooling');
|
|
94
|
+
await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
|
|
95
|
+
spinner.succeed();
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
spinner.fail(`Error building mac tooling: ${String(error)}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
62
101
|
}
|
|
63
102
|
// 4. symlink xsbug.app into user applications directory
|
|
64
103
|
try {
|
|
@@ -76,4 +115,4 @@ async function default_1() {
|
|
|
76
115
|
spinner.succeed('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
|
|
77
116
|
}
|
|
78
117
|
exports.default = default_1;
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLDJDQU1vQjtBQUNwQixnRUFBdUM7QUFDdkMseUNBQXFFO0FBR3JFLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQUUsWUFBWSxFQUFhOztJQUN4RCxlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFFdkMsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLGNBQWMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDdkMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLENBQ1IsQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLDBCQUFjLEdBQUUsQ0FBQTtJQUVyQyx1REFBdUQ7SUFDdkQsSUFBSTtRQUNGLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtLQUNyQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsZUFBSyxDQUFDLEtBQUssQ0FDVCw0RkFBNEYsQ0FDN0YsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFD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
|
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.moddableExists = void 0;
|
|
6
|
+
exports.downloadReleaseTools = exports.fetchLatestRelease = exports.moddableExists = void 0;
|
|
7
|
+
const stream_1 = require("stream");
|
|
8
|
+
const util_1 = require("util");
|
|
4
9
|
const gluegun_1 = require("gluegun");
|
|
10
|
+
const rest_1 = require("@octokit/rest");
|
|
11
|
+
const unzip_stream_1 = require("unzip-stream");
|
|
12
|
+
const axios_1 = __importDefault(require("axios"));
|
|
13
|
+
const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
5
14
|
function moddableExists() {
|
|
6
15
|
return (process.env.MODDABLE !== undefined &&
|
|
7
16
|
gluegun_1.filesystem.exists(process.env.MODDABLE) === 'dir');
|
|
8
17
|
}
|
|
9
18
|
exports.moddableExists = moddableExists;
|
|
10
|
-
|
|
19
|
+
async function fetchLatestRelease() {
|
|
20
|
+
const octokit = new rest_1.Octokit();
|
|
21
|
+
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
|
|
22
|
+
owner: 'Moddable-OpenSource',
|
|
23
|
+
repo: 'moddable',
|
|
24
|
+
});
|
|
25
|
+
return latestRelease;
|
|
26
|
+
}
|
|
27
|
+
exports.fetchLatestRelease = fetchLatestRelease;
|
|
28
|
+
async function downloadReleaseTools({ writePath, assetName, release, }) {
|
|
29
|
+
const moddableTools = release.assets.find(({ name }) => name === assetName);
|
|
30
|
+
if (moddableTools === undefined) {
|
|
31
|
+
throw new Error(`Unable to find release asset matching ${assetName}`);
|
|
32
|
+
}
|
|
33
|
+
const zipWriter = (0, unzip_stream_1.Extract)({
|
|
34
|
+
path: writePath,
|
|
35
|
+
});
|
|
36
|
+
const response = await axios_1.default.get(moddableTools.browser_download_url, {
|
|
37
|
+
responseType: 'stream',
|
|
38
|
+
});
|
|
39
|
+
response.data.pipe(zipWriter);
|
|
40
|
+
await finishedPromise(zipWriter);
|
|
41
|
+
}
|
|
42
|
+
exports.downloadReleaseTools = downloadReleaseTools;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9tb2RkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBaUM7QUFDakMsK0JBQWdDO0FBQ2hDLHFDQUFvQztBQUNwQyx3Q0FBZ0U7QUFDaEUsK0NBQW9EO0FBQ3BELGtEQUF5QjtBQUV6QixNQUFNLGVBQWUsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQVEsQ0FBQyxDQUFBO0FBRTNDLFNBQWdCLGNBQWM7SUFDNUIsT0FBTyxDQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVM7UUFDbEMsb0JBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLENBQ2xELENBQUE7QUFDSCxDQUFDO0FBTEQsd0NBS0M7QUFXTSxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBTyxFQUFFLENBQUE7SUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3hFLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsSUFBSSxFQUFFLFVBQVU7S0FDakIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxhQUFhLENBQUE7QUFDdEIsQ0FBQztBQVBELGdEQU9DO0FBUU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLEVBQ3pDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxHQUNXO0lBQ2xCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFBO0lBRTNFLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0tBQ3RFO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBVSxFQUFDO1FBQzNCLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUU7UUFDbkUsWUFBWSxFQUFFLFFBQVE7S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDN0IsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQW5CRCxvREFtQkMifQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|