xs-dev 0.38.1 → 1.0.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 (61) hide show
  1. package/README.md +1 -1
  2. package/build/package.json +13 -3
  3. package/build/src/commands/doctor.js +4 -3
  4. package/build/src/commands/init.js +3 -3
  5. package/build/src/commands/remove.js +2 -2
  6. package/build/src/commands/setup.js +21 -7
  7. package/build/src/toolbox/setup/ejectfix.js +29 -26
  8. package/build/src/toolbox/setup/esp32/linux.js +7 -3
  9. package/build/src/toolbox/setup/esp32/mac.js +5 -3
  10. package/build/src/toolbox/setup/esp32/windows.js +4 -2
  11. package/build/src/toolbox/setup/esp32.js +18 -8
  12. package/build/src/toolbox/setup/esp8266/linux.js +10 -4
  13. package/build/src/toolbox/setup/esp8266/mac.js +5 -3
  14. package/build/src/toolbox/setup/esp8266/windows.js +10 -9
  15. package/build/src/toolbox/setup/esp8266.js +16 -10
  16. package/build/src/toolbox/setup/lin.js +19 -7
  17. package/build/src/toolbox/setup/mac.js +14 -9
  18. package/build/src/toolbox/setup/moddable.js +35 -28
  19. package/build/src/toolbox/setup/nrf52/windows.js +5 -3
  20. package/build/src/toolbox/setup/nrf52.js +12 -10
  21. package/build/src/toolbox/setup/pico/linux.js +6 -2
  22. package/build/src/toolbox/setup/pico/mac.js +4 -2
  23. package/build/src/toolbox/setup/pico.js +10 -4
  24. package/build/src/toolbox/setup/wasm.js +7 -5
  25. package/build/src/toolbox/setup/windows.js +21 -14
  26. package/build/src/toolbox/system/__tests__/errors.test.js +163 -0
  27. package/build/src/toolbox/system/__tests__/exec.test.js +130 -0
  28. package/build/src/toolbox/system/errors.js +106 -0
  29. package/build/src/toolbox/system/exec.js +34 -28
  30. package/build/src/toolbox/system/packages.js +29 -26
  31. package/build/src/toolbox/system/python.js +11 -4
  32. package/build/src/toolbox/update/esp32.js +6 -4
  33. package/build/src/toolbox/update/lin.js +8 -2
  34. package/build/src/toolbox/update/mac.js +8 -2
  35. package/build/types/src/toolbox/setup/ejectfix.d.ts +2 -1
  36. package/build/types/src/toolbox/setup/esp32/linux.d.ts +2 -1
  37. package/build/types/src/toolbox/setup/esp32/mac.d.ts +2 -1
  38. package/build/types/src/toolbox/setup/esp32/windows.d.ts +2 -1
  39. package/build/types/src/toolbox/setup/esp32.d.ts +2 -1
  40. package/build/types/src/toolbox/setup/esp8266/linux.d.ts +2 -1
  41. package/build/types/src/toolbox/setup/esp8266/mac.d.ts +2 -1
  42. package/build/types/src/toolbox/setup/esp8266/windows.d.ts +3 -2
  43. package/build/types/src/toolbox/setup/esp8266.d.ts +2 -1
  44. package/build/types/src/toolbox/setup/lin.d.ts +2 -1
  45. package/build/types/src/toolbox/setup/mac.d.ts +2 -1
  46. package/build/types/src/toolbox/setup/moddable.d.ts +4 -3
  47. package/build/types/src/toolbox/setup/nrf52/windows.d.ts +2 -1
  48. package/build/types/src/toolbox/setup/nrf52.d.ts +2 -1
  49. package/build/types/src/toolbox/setup/pico/linux.d.ts +2 -1
  50. package/build/types/src/toolbox/setup/pico/mac.d.ts +2 -1
  51. package/build/types/src/toolbox/setup/pico.d.ts +2 -1
  52. package/build/types/src/toolbox/setup/wasm.d.ts +2 -1
  53. package/build/types/src/toolbox/setup/windows.d.ts +3 -2
  54. package/build/types/src/toolbox/system/__tests__/errors.test.d.ts +1 -0
  55. package/build/types/src/toolbox/system/__tests__/exec.test.d.ts +1 -0
  56. package/build/types/src/toolbox/system/errors.d.ts +51 -0
  57. package/build/types/src/toolbox/system/exec.d.ts +6 -5
  58. package/build/types/src/toolbox/system/packages.d.ts +3 -2
  59. package/build/types/src/toolbox/system/python.d.ts +2 -1
  60. package/build/types/src/types.d.ts +10 -0
  61. package/package.json +13 -3
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.detectPython = detectPython;
4
4
  exports.getPythonVersion = getPythonVersion;
5
5
  const gluegun_1 = require("gluegun");
6
+ const errors_1 = require("./errors");
6
7
  function detectPython() {
7
8
  if (gluegun_1.system.which('python') !== null)
8
9
  return 'python';
@@ -12,9 +13,15 @@ function detectPython() {
12
13
  }
13
14
  async function getPythonVersion() {
14
15
  const python = detectPython();
15
- if (python !== null) {
16
- return ((await gluegun_1.system.run(`${python} --version`)).split(' ').pop()?.trim() ?? null);
16
+ if (python === null) {
17
+ return (0, errors_1.failure)('Python not available on this system');
17
18
  }
18
- return null;
19
+ return await (0, errors_1.wrapAsync)(async () => {
20
+ const output = await gluegun_1.system.run(`${python} --version`);
21
+ const version = output.split(' ').pop()?.trim();
22
+ if (typeof version !== 'undefined')
23
+ return version;
24
+ throw new Error('Python version not found.');
25
+ });
19
26
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHl0aG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvc3lzdGVtL3B5dGhvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLG9DQUlDO0FBRUQsNENBUUM7QUFoQkQscUNBQWdDO0FBRWhDLFNBQWdCLFlBQVk7SUFDMUIsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFDcEQsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFDdEQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRU0sS0FBSyxVQUFVLGdCQUFnQjtJQUNwQyxNQUFNLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQTtJQUM3QixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQ0wsQ0FBQyxNQUFNLGdCQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQzNFLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIn0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHl0aG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvc3lzdGVtL3B5dGhvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLG9DQUlDO0FBRUQsNENBWUM7QUF0QkQscUNBQWdDO0FBRWhDLHFDQUE2QztBQUU3QyxTQUFnQixZQUFZO0lBQzFCLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSTtRQUFFLE9BQU8sUUFBUSxDQUFBO0lBQ3BELElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSTtRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQ3RELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVNLEtBQUssVUFBVSxnQkFBZ0I7SUFDcEMsTUFBTSxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUE7SUFDN0IsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxJQUFBLGdCQUFPLEVBQUMscUNBQXFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsT0FBTyxNQUFNLElBQUEsa0JBQVMsRUFBQyxLQUFLLElBQUksRUFBRTtRQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLGdCQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxZQUFZLENBQUMsQ0FBQTtRQUN0RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFBO1FBQy9DLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVztZQUFFLE9BQU8sT0FBTyxDQUFBO1FBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==
@@ -13,6 +13,7 @@ const mac_1 = require("../setup/esp32/mac");
13
13
  const linux_1 = require("../setup/esp32/linux");
14
14
  const esp32_1 = require("../setup/esp32");
15
15
  const exec_1 = require("../system/exec");
16
+ const errors_1 = require("../system/errors");
16
17
  async function default_1() {
17
18
  const OS = (0, os_1.type)().toLowerCase();
18
19
  const ESP_BRANCH_V4 = 'v4.4.3';
@@ -37,15 +38,16 @@ async function default_1() {
37
38
  // 2. update local esp-idf repo
38
39
  if (gluegun_1.filesystem.exists(IDF_PATH) === 'dir') {
39
40
  spinner.start('Updating esp-idf repo');
40
- const moddableVersion = (await (0, moddable_1.getModdableVersion)()) ?? '';
41
+ const moddableVersionResult = await (0, moddable_1.getModdableVersion)();
42
+ const moddableVersion = (0, errors_1.unwrapOr)(moddableVersionResult, '');
41
43
  const expectedEspIdfVersion = await (0, esp32_1.getExpectedEspIdfVersion)();
42
44
  const branch = expectedEspIdfVersion ??
43
45
  (moddableVersion.includes('branch') ||
44
- gluegun_1.semver.satisfies(moddableVersion ?? '', '>= 4.2.x')
46
+ gluegun_1.semver.satisfies(moddableVersion, '>= 4.2.x')
45
47
  ? ESP_BRANCH_V5
46
48
  : ESP_BRANCH_V4);
47
49
  if (branch === ESP_BRANCH_V5 &&
48
- !gluegun_1.semver.satisfies(moddableVersion ?? '', '>= 4.3.8')) {
50
+ !gluegun_1.semver.satisfies(moddableVersion, '>= 4.3.8')) {
49
51
  spinner.fail('Latest Moddable SDK is required before updating ESP-IDF. Run `xs-dev update` before trying again.');
50
52
  process.exit(1);
51
53
  }
@@ -101,4 +103,4 @@ async function default_1() {
101
103
  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.
102
104
  `);
103
105
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvZXNwMzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSw0QkFnSUM7QUExSUQscUNBQXFFO0FBQ3JFLDJCQUF5QztBQUN6QyxrREFBbUU7QUFDbkUsZ0RBQXNFO0FBQ3RFLGdFQUF1QztBQUN2Qyw0Q0FBa0U7QUFDbEUsZ0RBQXNFO0FBQ3RFLDBDQUF5RDtBQUN6RCx5Q0FBa0Q7QUFFbkMsS0FBSztJQUNsQixNQUFNLEVBQUUsR0FBRyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3ZDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQTtJQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUE7SUFDNUIsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFekQsTUFBTSxJQUFBLHdCQUFpQixHQUFFLENBQUE7SUFFekIsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUV4Qyw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FDVixvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUE7SUFDaEQsSUFDRSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFL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
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvZXNwMzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFXQSw0QkFpSUM7QUE1SUQscUNBQXFFO0FBQ3JFLDJCQUF5QztBQUN6QyxrREFBbUU7QUFDbkUsZ0RBQXNFO0FBQ3RFLGdFQUF1QztBQUN2Qyw0Q0FBa0U7QUFDbEUsZ0RBQXNFO0FBQ3RFLDBDQUF5RDtBQUN6RCx5Q0FBa0Q7QUFDbEQsNkNBQTJDO0FBRTVCLEtBQUs7SUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN2QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUE7SUFDOUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFBO0lBQzVCLE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDMUQsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRXpELE1BQU0sSUFBQSx3QkFBaUIsR0FBRSxDQUFBO0lBRXpCLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUE7SUFFeEMsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0VBQW9FLENBQ3JFLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO0lBQ2hELElBQ0Usb0JBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxD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
@@ -11,6 +11,7 @@ const gluegun_1 = require("gluegun");
11
11
  const constants_1 = require("../setup/constants");
12
12
  const moddable_1 = require("../setup/moddable");
13
13
  const exec_1 = require("../system/exec");
14
+ const errors_1 = require("../system/errors");
14
15
  const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
15
16
  async function default_1({ branch, release, interactive, }) {
16
17
  await (0, exec_1.sourceEnvironment)();
@@ -28,7 +29,12 @@ async function default_1({ branch, release, interactive, }) {
28
29
  cwd: process.env.MODDABLE,
29
30
  });
30
31
  // get latest release tag
31
- const remoteRelease = await (0, moddable_1.fetchRelease)(release);
32
+ const remoteReleaseResult = await (0, moddable_1.fetchRelease)(release);
33
+ if ((0, errors_1.isFailure)(remoteReleaseResult)) {
34
+ gluegun_1.print.error(`Failed to fetch release: ${remoteReleaseResult.error}`);
35
+ process.exit(1);
36
+ }
37
+ const remoteRelease = (0, errors_1.unwrap)(remoteReleaseResult);
32
38
  if (currentTag.trim() === remoteRelease.tag_name) {
33
39
  gluegun_1.print.success('Moddable SDK already up to date!');
34
40
  process.exit(0);
@@ -126,4 +132,4 @@ async function default_1({ branch, release, interactive, }) {
126
132
  gluegun_1.print.success('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
127
133
  }
128
134
  }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL2xpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLDRCQWdOQztBQS9ORCw0Q0FBbUI7QUFDbkIsK0JBQWdDO0FBQ2hDLDJCQUEwQjtBQUMxQixxQ0FBMkQ7QUFDM0Qsa0RBQWdGO0FBRWhGLGdEQUkwQjtBQUMxQix5Q0FBZ0U7QUFFaEUsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQkFBUyxFQUFDLFVBQUssQ0FBQyxDQUFBO0FBRXRCLEtBQUssb0JBQVcsRUFDN0IsTUFBTSxFQUNOLE9BQU8sRUFDUCxXQUFXLEdBQ0Q7SUFDVixNQUFNLElBQUEsd0JBQWlCLEdBQUUsQ0FBQTtJQUV6Qiw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFLENBQUM7UUFDdEIsZUFBSyxDQUFDLEtBQUssQ0FDVCxvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELGVBQUssQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUV0QyxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBQ0QsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBRXhCLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkUsMkJBQTJCO1FBQzNCLE1BQU0sVUFBVSxHQUFXLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3RELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFBO1FBQ0YseUJBQXlC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
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL2xpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSw0QkFxTkM7QUFyT0QsNENBQW1CO0FBQ25CLCtCQUFnQztBQUNoQywyQkFBMEI7QUFDMUIscUNBQTJEO0FBQzNELGtEQUFnRjtBQUVoRixnREFJMEI7QUFDMUIseUNBQWdFO0FBQ2hFLDZDQUFvRDtBQUVwRCxNQUFNLFlBQVksR0FBRyxJQUFBLGdCQUFTLEVBQUMsVUFBSyxDQUFDLENBQUE7QUFFdEIsS0FBSyxvQkFBVyxFQUM3QixNQUFNLEVBQ04sT0FBTyxFQUNQLFdBQVcsR0FDRDtJQUNWLE1BQU0sSUFBQSx3QkFBaUIsR0FBRSxDQUFBO0lBRXpCLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUUsQ0FBQztRQUN0QixlQUFLLENBQUMsS0FBSyxDQUNULG9FQUFvRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsZUFBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBRXRDLE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUE7SUFDRCxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUE7SUFFeEIsSUFBSSxPQUFPLEtBQUssU0FBUyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2RSwyQkFBMkI7UUFDM0IsTUFBTSxVQUFVLEdBQVcsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtTQUMxQixDQUFDLENB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
@@ -11,6 +11,7 @@ const gluegun_1 = require("gluegun");
11
11
  const constants_1 = require("../setup/constants");
12
12
  const moddable_1 = require("../setup/moddable");
13
13
  const exec_1 = require("../system/exec");
14
+ const errors_1 = require("../system/errors");
14
15
  const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
15
16
  async function default_1({ branch, release, interactive, }) {
16
17
  gluegun_1.print.info('Checking for SDK changes');
@@ -27,7 +28,12 @@ async function default_1({ branch, release, interactive, }) {
27
28
  cwd: process.env.MODDABLE,
28
29
  });
29
30
  // get release tag
30
- const remoteRelease = await (0, moddable_1.fetchRelease)(release);
31
+ const remoteReleaseResult = await (0, moddable_1.fetchRelease)(release);
32
+ if ((0, errors_1.isFailure)(remoteReleaseResult)) {
33
+ gluegun_1.print.error(`Failed to fetch release: ${remoteReleaseResult.error}`);
34
+ process.exit(1);
35
+ }
36
+ const remoteRelease = (0, errors_1.unwrap)(remoteReleaseResult);
31
37
  if (currentTag.trim() === remoteRelease.tag_name) {
32
38
  gluegun_1.print.success('Moddable SDK already up to date!');
33
39
  process.exit(0);
@@ -134,4 +140,4 @@ async function default_1({ branch, release, interactive, }) {
134
140
  spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
135
141
  }
136
142
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL21hYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSw0QkFtTUM7QUFuTkQsNENBQW1CO0FBQ25CLCtCQUFnQztBQUNoQywyQkFBMEI7QUFDMUIscUNBQTJEO0FBQzNELGtEQUFnRjtBQUNoRixnREFLMEI7QUFFMUIseUNBQWtEO0FBRWxELE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQzdCLE1BQU0sRUFDTixPQUFPLEVBQ1AsV0FBVyxHQUNEO0lBQ1YsZUFBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBRXRDLE1BQU0sSUFBQSx3QkFBaUIsR0FBRSxDQUFBO0lBRXpCLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUUsQ0FBQztRQUN0QixlQUFLLENBQUMsS0FBSyxDQUNULG9FQUFvRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBRXhCLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkUsMkJBQTJCO1FBQzNCLE1BQU0sVUFBVSxHQUFXLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3RELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFBO1FBQ0Ysa0JBQWtCO1FBQ2xCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpELElBQUksVUFBVSxDQUFDLElBQUksRUFB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
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL21hYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWlCQSw0QkF3TUM7QUF6TkQsNENBQW1CO0FBQ25CLCtCQUFnQztBQUNoQywyQkFBMEI7QUFDMUIscUNBQTJEO0FBQzNELGtEQUFnRjtBQUNoRixnREFLMEI7QUFFMUIseUNBQWtEO0FBQ2xELDZDQUFvRDtBQUVwRCxNQUFNLFlBQVksR0FBRyxJQUFBLGdCQUFTLEVBQUMsVUFBSyxDQUFDLENBQUE7QUFFdEIsS0FBSyxvQkFBVyxFQUM3QixNQUFNLEVBQ04sT0FBTyxFQUNQLFdBQVcsR0FDRDtJQUNWLGVBQUssQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUV0QyxNQUFNLElBQUEsd0JBQWlCLEdBQUUsQ0FBQTtJQUV6Qiw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFLENBQUM7UUFDdEIsZUFBSyxDQUFDLEtBQUssQ0FDVCxvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUV4QixJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQTtRQUNGLGtCQUFrQjtRQUNsQixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZELElBQUksSUFB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
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import type { Result } from '../../types';
2
+ export default function (): Promise<Result<void>>;
@@ -1,2 +1,3 @@
1
1
  import type { GluegunPrint } from 'gluegun';
2
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
2
+ import type { Result } from '../../../types';
3
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<Result<void>>;
@@ -1,2 +1,3 @@
1
1
  import type { GluegunPrint } from 'gluegun';
2
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
2
+ import type { Result } from '../../../types';
3
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<Result<void>>;
@@ -1,3 +1,4 @@
1
1
  import type { GluegunPrint } from 'gluegun';
2
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>, ESP32_DIR: string, IDF_PATH: string): Promise<void>;
2
+ import type { Result } from '../../../types';
3
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>, ESP32_DIR: string, IDF_PATH: string): Promise<Result<void>>;
3
4
  export declare function esp32Exists(): boolean;
@@ -1,2 +1,3 @@
1
- export default function (): Promise<void>;
1
+ import type { Result } from '../../types';
2
+ export default function (): Promise<Result<void>>;
2
3
  export declare function getExpectedEspIdfVersion(): Promise<string | null>;
@@ -1,2 +1,3 @@
1
1
  import type { GluegunPrint } from 'gluegun';
2
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
2
+ import type { SetupResult } from '../../../types';
3
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<SetupResult>;
@@ -1,2 +1,3 @@
1
1
  import type { GluegunPrint } from 'gluegun';
2
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
2
+ import type { SetupResult } from '../../../types';
3
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<SetupResult>;
@@ -1,3 +1,4 @@
1
1
  import type { GluegunPrint } from 'gluegun';
2
- export declare function installPython(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
3
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>, ESP_DIR: string): Promise<void>;
2
+ import type { SetupResult } from '../../../types';
3
+ export declare function installPython(spinner: ReturnType<GluegunPrint['spin']>): Promise<SetupResult>;
4
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>, ESP_DIR: string): Promise<SetupResult>;
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import type { SetupResult } from '../../types';
2
+ export default function (): Promise<SetupResult>;
@@ -1,2 +1,3 @@
1
1
  import type { PlatformSetupArgs } from './types';
2
- export default function ({ sourceRepo, branch, release, interactive, }: PlatformSetupArgs): Promise<void>;
2
+ import type { SetupResult } from '../../types';
3
+ export default function ({ sourceRepo, branch, release, interactive, }: PlatformSetupArgs): Promise<SetupResult>;
@@ -1,2 +1,3 @@
1
1
  import type { PlatformSetupArgs } from './types';
2
- export default function ({ sourceRepo, branch, release, interactive, }: PlatformSetupArgs): Promise<void>;
2
+ import type { SetupResult } from '../../types';
3
+ export default function ({ sourceRepo, branch, release, interactive, }: PlatformSetupArgs): Promise<SetupResult>;
@@ -1,9 +1,10 @@
1
1
  import { type RestEndpointMethodTypes } from '@octokit/rest';
2
+ import type { Result } from '../../types';
2
3
  export declare function moddableExists(): boolean;
3
- export declare function getModdableVersion(): Promise<string | null>;
4
+ export declare function getModdableVersion(): Promise<Result<string>>;
4
5
  type ExtractFromArray<Item extends readonly unknown[]> = Item extends Readonly<Array<infer ItemType>> ? ItemType : never;
5
6
  type GitHubRelease = ExtractFromArray<RestEndpointMethodTypes['repos']['listReleases']['response']['data']>;
6
- export declare function fetchRelease(release: 'latest' | string): Promise<GitHubRelease>;
7
+ export declare function fetchRelease(release: 'latest' | string): Promise<Result<GitHubRelease>>;
7
8
  export declare class MissingReleaseAssetError extends Error {
8
9
  constructor(assetName: string);
9
10
  }
@@ -12,5 +13,5 @@ interface DownloadToolsArgs {
12
13
  assetName: string;
13
14
  release: GitHubRelease;
14
15
  }
15
- export declare function downloadReleaseTools({ writePath, assetName, release, }: DownloadToolsArgs): Promise<void>;
16
+ export declare function downloadReleaseTools({ writePath, assetName, release, }: DownloadToolsArgs): Promise<Result<void>>;
16
17
  export {};
@@ -1,2 +1,3 @@
1
1
  import { type GluegunPrint } from 'gluegun';
2
- export declare function installPython(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
2
+ import type { SetupResult } from '../../../types';
3
+ export declare function installPython(spinner: ReturnType<GluegunPrint['spin']>): Promise<SetupResult>;
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import type { SetupResult } from '../../types';
2
+ export default function (): Promise<SetupResult>;
@@ -1,2 +1,3 @@
1
1
  import type { GluegunPrint } from 'gluegun';
2
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
2
+ import type { SetupResult } from '../../../types';
3
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<SetupResult>;
@@ -1,2 +1,3 @@
1
1
  import { type GluegunPrint } from 'gluegun';
2
- export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
2
+ import type { SetupResult } from '../../../types';
3
+ export declare function installDeps(spinner: ReturnType<GluegunPrint['spin']>): Promise<SetupResult>;
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import type { SetupResult } from '../../types';
2
+ export default function (): Promise<SetupResult>;
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import type { SetupResult } from '../../types';
2
+ export default function (): Promise<SetupResult>;
@@ -1,7 +1,8 @@
1
1
  import { type GluegunPrint } from 'gluegun';
2
2
  import type { PlatformSetupArgs } from './types';
3
+ import type { Result, SetupResult } from '../../types';
3
4
  export declare function setEnv(name: string, permanentValue: string, envValue?: string): Promise<void>;
4
5
  export declare function addToPath(path: string): Promise<void>;
5
6
  export declare function openModdableCommandPrompt(): Promise<void>;
6
- export declare function ensureModdableCommandPrompt(spinner: ReturnType<GluegunPrint['spin']>): Promise<void>;
7
- export default function ({ sourceRepo, branch, release, interactive, }: PlatformSetupArgs): Promise<void>;
7
+ export declare function ensureModdableCommandPrompt(spinner: ReturnType<GluegunPrint['spin']>): Promise<Result<void>>;
8
+ export default function ({ sourceRepo, branch, release, interactive, }: PlatformSetupArgs): Promise<SetupResult>;
@@ -0,0 +1,51 @@
1
+ import type { Result } from '../../types';
2
+ /**
3
+ * Creates a successful result
4
+ */
5
+ export declare function success<T>(data: T): Result<T>;
6
+ /**
7
+ * Creates a successful result with no data (void)
8
+ */
9
+ export declare function successVoid(): Result<void>;
10
+ /**
11
+ * Creates a failed result with error message
12
+ */
13
+ export declare function failure<T = never>(error: string): Result<T>;
14
+ /**
15
+ * Wraps a function that might throw in a Result type
16
+ */
17
+ export declare function wrapAsync<T>(fn: () => Promise<T>): Promise<Result<T>>;
18
+ /**
19
+ * Wraps a synchronous function that might throw in a Result type
20
+ */
21
+ export declare function wrapSync<T>(fn: () => T): Result<T>;
22
+ /**
23
+ * Checks if a Result is successful
24
+ */
25
+ export declare function isSuccess<T>(result: Result<T>): result is {
26
+ success: true;
27
+ data: T;
28
+ };
29
+ /**
30
+ * Checks if a Result is a failure
31
+ */
32
+ export declare function isFailure<T>(result: Result<T>): result is {
33
+ success: false;
34
+ error: string;
35
+ };
36
+ /**
37
+ * Gets data from a successful result or throws if failed
38
+ */
39
+ export declare function unwrap<T>(result: Result<T>): T;
40
+ /**
41
+ * Gets data from a successful result or returns default value if failed
42
+ */
43
+ export declare function unwrapOr<T>(result: Result<T>, defaultValue: T): T;
44
+ /**
45
+ * Maps the data of a successful result, or passes through the error
46
+ */
47
+ export declare function mapResult<T, U>(result: Result<T>, fn: (data: T) => U): Result<U>;
48
+ /**
49
+ * Chains Result operations together
50
+ */
51
+ export declare function flatMapResult<T, U>(result: Result<T>, fn: (data: T) => Result<U>): Result<U>;
@@ -1,21 +1,22 @@
1
+ import type { Result } from '../../types';
1
2
  /**
2
3
  * Ensure command can be run with sudo,
3
4
  * first attempting as non-interactive before falling back to ssh-askpass prompt
4
5
  **/
5
- export declare function execWithSudo(command: string, options?: Record<string, unknown>): Promise<void>;
6
+ export declare function execWithSudo(command: string, options?: Record<string, unknown>): Promise<Result<void>>;
6
7
  /**
7
8
  * Use Policykit pkexec to run the command as an admin user
8
9
  */
9
- export declare function pkexec(command: string, options?: Record<string, unknown>): Promise<void>;
10
+ export declare function pkexec(command: string, options?: Record<string, unknown>): Promise<Result<void>>;
10
11
  /**
11
12
  * Set updated env from user shell as process.env
12
13
  */
13
- export declare function sourceEnvironment(): Promise<void>;
14
+ export declare function sourceEnvironment(): Promise<Result<void>>;
14
15
  /**
15
16
  * Set updated env from IDF_PATH/export.sh as process.env
16
17
  */
17
- export declare function sourceIdf(): Promise<void>;
18
+ export declare function sourceIdf(): Promise<Result<void>>;
18
19
  /**
19
20
  * Set updated env from IDF_PYTHON_ENV_PATH as process.env
20
21
  */
21
- export declare function sourceIdfPythonEnv(): Promise<void>;
22
+ export declare function sourceIdfPythonEnv(): Promise<Result<void>>;
@@ -1,9 +1,10 @@
1
1
  import type { Dependency } from './types';
2
+ import type { Result } from '../../types';
2
3
  /**
3
4
  * Check if the list of dependencies are installed on the system.
4
5
  **/
5
- export declare function findMissingDependencies(dependencies: Dependency[]): Promise<Dependency[]>;
6
+ export declare function findMissingDependencies(dependencies: Dependency[]): Promise<Result<Dependency[]>>;
6
7
  /**
7
8
  * Attempt to install packages on the linux platform.
8
9
  **/
9
- export declare function installPackages(packages: Dependency[]): Promise<void>;
10
+ export declare function installPackages(packages: Dependency[]): Promise<Result<void>>;
@@ -1,2 +1,3 @@
1
+ import type { Result } from '../../types';
1
2
  export declare function detectPython(): string | null;
2
- export declare function getPythonVersion(): Promise<string | null>;
3
+ export declare function getPythonVersion(): Promise<Result<string>>;
@@ -2,6 +2,16 @@ import type { GluegunToolbox } from 'gluegun';
2
2
  import type { PlatformSetupArgs, SetupArgs } from './toolbox/setup/types';
3
3
  import type { BuildArgs } from './toolbox/build/index';
4
4
  export type Device = 'darwin' | 'mac' | 'linux' | 'lin' | 'windows_nt' | 'windows' | 'win' | 'esp8266' | 'esp32' | 'wasm' | 'pico' | 'nrf52';
5
+ export type Result<T, E = string> = {
6
+ success: true;
7
+ data: T;
8
+ } | {
9
+ success: false;
10
+ error: E;
11
+ };
12
+ export type SetupResult = Result<void>;
13
+ export type BuildResult = Result<string>;
14
+ export type UpdateResult = Result<void>;
5
15
  export interface XSDevToolbox extends GluegunToolbox {
6
16
  setup: Record<Device, (() => Promise<void>) | ((args: SetupArgs | PlatformSetupArgs) => Promise<void>)>;
7
17
  update: Record<Device, (() => Promise<void>) | ((args: SetupArgs) => Promise<void>)>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "0.38.1",
3
+ "version": "1.0.0",
4
4
  "description": "CLI for automating the setup and usage of Moddable XS tools",
5
5
  "types": "build/types/types.d.ts",
6
6
  "engines": {
@@ -98,7 +98,10 @@
98
98
  },
99
99
  "jest": {
100
100
  "preset": "ts-jest",
101
- "testEnvironment": "node"
101
+ "testEnvironment": "node",
102
+ "testPathIgnorePatterns": [
103
+ "<rootDir>/build/"
104
+ ]
102
105
  },
103
106
  "volta": {
104
107
  "node": "18.14.0"
@@ -113,7 +116,14 @@
113
116
  "ejs@<3.1.7": ">=3.1.7",
114
117
  "axios@>=0.8.1 <1.6.0": ">=1.6.0",
115
118
  "minimatch@<3.0.5": ">=3.0.5"
116
- }
119
+ },
120
+ "onlyBuiltDependencies": [
121
+ "@serialport/bindings-cpp",
122
+ "esbuild",
123
+ "node-liblzma",
124
+ "sharp",
125
+ "usb"
126
+ ]
117
127
  },
118
128
  "author": "HipsterBrown <headhipster@hipsterbrown.com>",
119
129
  "auto": {