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.
Files changed (49) hide show
  1. package/README.md +1 -1
  2. package/bin/xs-dev +3 -4
  3. package/build/commands/build.js +30 -0
  4. package/build/commands/run.js +15 -124
  5. package/build/commands/setup.js +3 -3
  6. package/build/commands/update.js +3 -3
  7. package/build/extensions/build-extension.js +7 -0
  8. package/build/toolbox/build/index.js +145 -0
  9. package/build/toolbox/setup/constants.js +10 -3
  10. package/build/toolbox/setup/esp32/windows.js +42 -0
  11. package/build/toolbox/setup/esp32.js +48 -19
  12. package/build/toolbox/setup/esp8266/windows.js +84 -0
  13. package/build/toolbox/setup/esp8266.js +44 -16
  14. package/build/toolbox/setup/linux.js +45 -7
  15. package/build/toolbox/setup/mac.js +51 -12
  16. package/build/toolbox/setup/moddable.js +35 -2
  17. package/build/toolbox/setup/types.js +3 -0
  18. package/build/toolbox/setup/windows.js +167 -3
  19. package/build/toolbox/update/linux.js +92 -31
  20. package/build/toolbox/update/mac.js +80 -26
  21. package/build/types/commands/build.d.ts +4 -0
  22. package/build/types/extensions/build-extension.d.ts +3 -0
  23. package/build/types/toolbox/build/index.d.ts +13 -0
  24. package/build/types/toolbox/setup/esp32/windows.d.ts +3 -0
  25. package/build/types/toolbox/setup/esp8266/windows.d.ts +3 -0
  26. package/build/types/toolbox/setup/linux.d.ts +2 -1
  27. package/build/types/toolbox/setup/mac.d.ts +2 -1
  28. package/build/types/toolbox/setup/moddable.d.ts +11 -0
  29. package/build/types/toolbox/setup/types.d.ts +3 -0
  30. package/build/types/toolbox/setup/windows.d.ts +7 -1
  31. package/build/types/toolbox/update/linux.d.ts +2 -1
  32. package/build/types/toolbox/update/mac.d.ts +2 -1
  33. package/build/types/types.d.ts +5 -2
  34. package/docs/public/run-hello-world.png +0 -0
  35. package/docs/src/components/HeadCommon.astro +4 -13
  36. package/docs/src/components/HeadSEO.astro +2 -8
  37. package/docs/src/components/Header/Header.astro +1 -1
  38. package/docs/src/components/LeftSidebar/LeftSidebar.astro +1 -1
  39. package/docs/src/components/RightSidebar/RightSidebar.astro +2 -3
  40. package/docs/src/components/RightSidebar/TableOfContents.tsx +50 -43
  41. package/docs/src/config.ts +3 -0
  42. package/docs/src/layouts/MainLayout.astro +3 -3
  43. package/docs/src/pages/en/features/run.md +29 -2
  44. package/docs/src/pages/en/features/setup.md +13 -1
  45. package/docs/src/pages/en/features/update.md +16 -0
  46. package/docs/src/pages/en/guide/00-prepare.md +54 -0
  47. package/docs/src/pages/en/guide/01-hello-console.md +62 -0
  48. package/docs/tsconfig.json +3 -1
  49. 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 TOOLCHAIN = `https://www.moddable.com/private/esp8266.toolchain.${OS}.tgz`;
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
- const writer = (0, tar_fs_1.extract)(ESP_DIR, { readable: true });
44
- const gunzip = (0, zlib_1.createGunzip)();
45
- const response = await axios_1.default.get(TOOLCHAIN, {
46
- responseType: 'stream',
47
- });
48
- response.data.pipe(gunzip).pipe(writer);
49
- await finishedPromise(writer);
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
- // 7. create ESP_BARE env export in shell profile
77
- if (process.env.ESP_BASE === undefined) {
78
- spinner.info('Configuring $ESP_BASE');
79
- process.env.ESP_BASE = ESP_DIR;
80
- await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export ESP_BASE=${process.env.ESP_BASE}`);
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 moddable!
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwODI2Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQXlCO0FBQ3pCLG1DQUFpQztBQUNqQywrQkFBZ0M7QUFDaEMsbUNBQWdDO0FBQ2hDLCtCQUFtQztBQUNuQywrQ0FBb0Q7QUFDcEQsMkJBQXlDO0FBQ3pDLDJDQUE0RDtBQUM1RCx5Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBQ3ZDLHVDQUE2RDtBQUM3RCwyQ0FBaUU7QUFFakUsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQkFBUyxFQUFDLGlCQUFRLENBQUMsQ0FBQTtBQUU1QixLQUFLO0lBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDdkMsTUFBTSxTQUFTLEdBQUcsc0RBQXNELEVBQUUsTUFBTSxDQUFBO0lBQ2hGLE1BQU0sWUFBWSxHQUNoQiw4RUFBOEUsQ0FBQTtJQUNoRixNQUFNLGFBQWEsR0FBRyxtREFBbUQsQ0FBQTtJQUN6RSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUE7SUFDakMsTUFBTSxPQUFPLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0RCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUNqRSxNQUFNLGNBQWMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFFdEUsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENB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
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
- async function default_1() {
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
- spinner.start('Cloning Moddable-OpenSource/moddable repo');
36
- await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH}`);
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
- spinner.start('Building platform tooling');
47
- await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
48
- spinner.succeed();
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9saW51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFDQUFtRDtBQUNuRCwyQ0FNb0I7QUFDcEIsZ0VBQXVDO0FBQ3ZDLHlDQUE2QztBQUU5QixLQUFLO0lBQ2xCLGVBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDakMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLENBQ1YsQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxJQUFBLDBCQUFjLEdBQUUsQ0FBQTtJQUVyQyxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBRW5DLCtFQUErRTtJQUMvRSxvQkFBVSxDQUFDLEdBQUcsQ0FBQyx1QkFBVyxDQUFDLENBQUE7SUFFM0IsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUsMkJBQTJCLENBQUMsQ0FBQTtJQUU1RCx5REFBeUQ7SUFDekQsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO0lBQzNDLE1BQU0sSUFBQSxtQkFBWSxFQUNoQix5RUFBeUUsRUFDekUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUMzQixDQUFBO0lBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLDJEQUEyRDtJQUMzRCxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDckMsTUFBTSxJQUFBLG1CQUFZLEVBQUMsb0NBQW9DLEVBQUU7UUFDdkQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQTtJQUNGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVqQixvRkFBb0Y7SUFDcEYsSUFBSSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyx3QkFBWSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtLQUNoRDtTQUFNO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1FBQzFELE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSx5QkFBYSxJQUFJLHdCQUFZLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtLQUNsQjtJQUVELDZDQUE2QztJQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyx3QkFBWSxDQUFBO0lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUE7SUFFNUQsTUFBTSxJQUFBLGdCQUFNLEVBQUMsWUFBWSxFQUFFLFVBQVUsNkJBQWlCLEVBQUUsQ0FBQyxDQUFBO0lBRXpELE1BQU0sSUFBQSxnQkFBTSxFQUFDLDZCQUFpQixFQUFFLG1CQUFtQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDMUUsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUsZ0JBQWdCLFFBQVEsU0FBUyxDQUFDLENBQUE7SUFFbEUsMkZBQTJGO0lBQzNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtJQUMxQyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3JFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVqQixtRUFBbUU7SUFDbkUsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sSUFBQSxtQkFBWSxFQUFDLGNBQWMsRUFBRTtRQUNqQyxHQUFHLEVBQUUsU0FBUztRQUNkLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUE7SUFDRixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFakIsYUFBYTtJQUNiLGVBQUssQ0FBQyxPQUFPLENBQ1gsa0lBQWtJLENBQ25JLENBQUE7QUFDSCxDQUFDO0FBNUVELDRCQTRFQyJ9
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
- async function default_1() {
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
- spinner.start('Cloning Moddable-OpenSource/moddable repo');
39
- await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH}`);
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
- try {
55
- spinner.start('Building platform tooling');
56
- await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
57
- spinner.succeed();
58
- }
59
- catch (error) {
60
- spinner.fail(`Error building mac tooling: ${String(error)}`);
61
- process.exit(1);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDJDQU1vQjtBQUNwQixnRUFBdUM7QUFFeEIsS0FBSztJQUNsQixlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFFdkMsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBQSwwQkFBYyxHQUFFLENBQUE7SUFFckMsdURBQXVEO0lBQ3ZELElBQUk7UUFDRixNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLGVBQUssQ0FBQyxLQUFLLENBQ1QsNEZBQTRGLENBQzdGLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUVuQywrRUFBK0U7SUFDL0UsSUFBSTtRQUNGLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtRQUUzQixNQUFNLElBQUEsZ0JBQU0sRUFBQyw2QkFBaUIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFBO0tBQzdEO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxNQUFN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
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9tb2RkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBb0M7QUFFcEMsU0FBZ0IsY0FBYztJQUM1QixPQUFPLENBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUztRQUNsQyxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssQ0FDbEQsQ0FBQTtBQUNILENBQUM7QUFMRCx3Q0FLQyJ9
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=