xs-dev 0.1.0 → 0.1.1

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 CHANGED
@@ -34,7 +34,7 @@ npm install -g xs-dev
34
34
 
35
35
  ## Features
36
36
 
37
- ### Moddable SDK install / setup / update
37
+ ### Moddable SDK setup / update / teardown
38
38
 
39
39
  This process mostly automates the instructions provided by Moddable's "Getting Started" documentation with a few exceptions:
40
40
 
@@ -54,6 +54,12 @@ Run script for updating SDK:
54
54
  xs-dev update
55
55
  ```
56
56
 
57
+ Remove all setup and environment changes with teardown command:
58
+
59
+ ```
60
+ xs-dev teardown
61
+ ```
62
+
57
63
  ### ESP32 SDK install / setup
58
64
 
59
65
  This process automates the instructions for downloading and building the esp-idf SDK tooling. This tooling will be placed in the `~/.local/share/esp32` directory, which will be created if it doesn't exist.
@@ -11,7 +11,7 @@ const command = {
11
11
  filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'moddable'));
12
12
  filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'wasm'));
13
13
  filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'esp32'));
14
- filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'esp8266'));
14
+ filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'esp'));
15
15
  await patching.patch(constants_1.PROFILE_PATH, {
16
16
  delete: `source ${constants_1.EXPORTS_FILE_PATH}`,
17
17
  });
@@ -19,4 +19,4 @@ const command = {
19
19
  },
20
20
  };
21
21
  exports.default = command;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvdGVhcmRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwwREFJbUM7QUFFbkMsTUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxVQUFVO0lBQ2hCLFdBQVcsRUFDVCwwRUFBMEU7SUFDNUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUM3QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFBO1FBRXRFLFVBQVUsQ0FBQyxNQUFNLENBQUMsNkJBQWlCLENBQUMsQ0FBQTtRQUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBQzlELFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDMUQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO1FBRTdELE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyx3QkFBWSxFQUFFO1lBQ2pDLE1BQU0sRUFBRSxVQUFVLDZCQUFpQixFQUFFO1NBQ3RDLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvdGVhcmRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwwREFJbUM7QUFFbkMsTUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxVQUFVO0lBQ2hCLFdBQVcsRUFDVCwwRUFBMEU7SUFDNUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUM3QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFBO1FBRXRFLFVBQVUsQ0FBQyxNQUFNLENBQUMsNkJBQWlCLENBQUMsQ0FBQTtRQUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBQzlELFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDMUQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRXpELE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyx3QkFBWSxFQUFFO1lBQ2pDLE1BQU0sRUFBRSxVQUFVLDZCQUFpQixFQUFFO1NBQ3RDLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const gluegun_1 = require("gluegun");
7
7
  const constants_1 = require("./constants");
8
+ const moddable_1 = require("./moddable");
8
9
  const upsert_1 = __importDefault(require("../patching/upsert"));
9
10
  async function default_1() {
10
11
  const ESP_IDF_REPO = 'https://github.com/espressif/esp-idf.git';
@@ -14,7 +15,7 @@ async function default_1() {
14
15
  const spinner = gluegun_1.print.spin();
15
16
  spinner.start('Setting up esp32 tools');
16
17
  // 0. ensure Moddable exists
17
- if (process.env.MODDABLE === undefined) {
18
+ if (!(0, moddable_1.moddableExists)()) {
18
19
  spinner.fail('Moddable tooling required. Run `xs-dev setup` before trying again.');
19
20
  process.exit(1);
20
21
  }
@@ -82,4 +83,4 @@ async function default_1() {
82
83
  `);
83
84
  }
84
85
  exports.default = default_1;
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3AzMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFDQUEyRDtBQUMzRCwyQ0FBNEQ7QUFDNUQsZ0VBQXVDO0FBRXhCLEtBQUs7SUFDbEIsTUFBTSxZQUFZLEdBQUcsMENBQTBDLENBQUE7SUFDL0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFBO0lBQzNCLE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDMUQsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRXpELE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFFdkMsNEJBQTRCO0lBQzVCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0VBQW9FLENBQ3JFLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtJQUNoRCxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN6QixvQkFBVSxDQUFDLElBQUksQ0FBQyw2QkFBaUIsQ0FBQyxDQUFBO0lBRWxDLHFEQUFxRDtJQUNyRCxJQUFJLG9CQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDckMsTUFBTSxnQkFBTSxDQUFDLEtBQUssQ0FD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
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3AzMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFDQUEyRDtBQUMzRCwyQ0FBNEQ7QUFDNUQseUNBQTJDO0FBQzNDLGdFQUF1QztBQUV4QixLQUFLO0lBQ2xCLE1BQU0sWUFBWSxHQUFHLDBDQUEwQyxDQUFBO0lBQy9ELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQTtJQUMzQixNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzFELE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUV6RCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBRXZDLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FDVixvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCwyQ0FBMkM7SUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO0lBQ2hELG9CQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3pCLG9CQUFVLENBQUMsSUFBSSxDQUFDLDZCQUFpQixDQUFDLENBQUE7SUFFbEMscURBQXFEO0lBQ3JELElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUNyQyxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNo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
@@ -11,6 +11,7 @@ const tar_fs_1 = require("tar-fs");
11
11
  const zlib_1 = require("zlib");
12
12
  const unzip_stream_1 = require("unzip-stream");
13
13
  const constants_1 = require("./constants");
14
+ const moddable_1 = require("./moddable");
14
15
  const upsert_1 = __importDefault(require("../patching/upsert"));
15
16
  const finishedPromise = (0, util_1.promisify)(stream_1.finished);
16
17
  async function default_1() {
@@ -25,7 +26,7 @@ async function default_1() {
25
26
  const spinner = gluegun_1.print.spin();
26
27
  spinner.start('Setting up esp8266 tools');
27
28
  // 0. ensure Moddable exists
28
- if (process.env.MODDABLE === undefined) {
29
+ if (!(0, moddable_1.moddableExists)()) {
29
30
  spinner.fail('Moddable tooling required. Run `xs-dev setup` before trying again.');
30
31
  process.exit(1);
31
32
  }
@@ -89,4 +90,4 @@ async function default_1() {
89
90
  `);
90
91
  }
91
92
  exports.default = default_1;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwODI2Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQXlCO0FBQ3pCLG1DQUFpQztBQUNqQywrQkFBZ0M7QUFDaEMsbUNBQWdDO0FBQ2hDLCtCQUFtQztBQUNuQywrQ0FBb0Q7QUFDcEQsMkNBQTREO0FBQzVELGdFQUF1QztBQUV2QyxNQUFNLGVBQWUsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQVEsQ0FBQyxDQUFBO0FBRTVCLEtBQUs7SUFDbEIsTUFBTSxTQUFTLEdBQ2IsK0RBQStELENBQUE7SUFDakUsTUFBTSxZQUFZLEdBQ2hCLDhFQUE4RSxDQUFBO0lBQ2hGLE1BQU0sYUFBYSxHQUFHLG1EQUFtRCxDQUFBO0lBQ3pFLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQTtJQUNqQyxNQUFNLE9BQU8sR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3RELE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sY0FBYyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLGlCQUFpQixHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUV0RSxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBRXpDLDRCQUE0QjtJQUM1QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUNWLG9FQUFvRSxD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
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwODI2Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQXlCO0FBQ3pCLG1DQUFpQztBQUNqQywrQkFBZ0M7QUFDaEMsbUNBQWdDO0FBQ2hDLCtCQUFtQztBQUNuQywrQ0FBb0Q7QUFDcEQsMkNBQTREO0FBQzVELHlDQUEyQztBQUMzQyxnRUFBdUM7QUFFdkMsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQkFBUyxFQUFDLGlCQUFRLENBQUMsQ0FBQTtBQUU1QixLQUFLO0lBQ2xCLE1BQU0sU0FBUyxHQUNiLCtEQUErRCxDQUFBO0lBQ2pFLE1BQU0sWUFBWSxHQUNoQiw4RUFBOEUsQ0FBQTtJQUNoRixNQUFNLGFBQWEsR0FBRyxtREFBbUQsQ0FBQTtJQUN6RSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUE7SUFDakMsTUFBTSxPQUFPLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0RCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUNqRSxNQUFNLGNBQWMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFFdEUsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUV6Qyw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0VBQW9FLENB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
@@ -24,6 +24,11 @@ async function default_1() {
24
24
  // 1. clone moddable repo into ./local/share directory if it does not exist yet
25
25
  try {
26
26
  gluegun_1.filesystem.dir(constants_1.INSTALL_DIR);
27
+ if (gluegun_1.filesystem.exists(constants_1.EXPORTS_FILE_PATH) === false) {
28
+ gluegun_1.filesystem.file(constants_1.EXPORTS_FILE_PATH, {
29
+ content: `# Generated by xs-dev CLI\n`,
30
+ });
31
+ }
27
32
  }
28
33
  catch (error) {
29
34
  spinner.fail(`Error setting up install directory: ${String(error)}`);
@@ -44,19 +49,11 @@ async function default_1() {
44
49
  }
45
50
  }
46
51
  // 2. configure MODDABLE env variable, add release binaries dir to PATH
47
- if (process.env.MODDABLE === undefined) {
48
- process.env.MODDABLE = constants_1.INSTALL_PATH;
49
- process.env.PATH = `${String(process.env.PATH)}:${BIN_PATH}`;
50
- gluegun_1.filesystem.file(constants_1.EXPORTS_FILE_PATH, {
51
- content: `# Generated by xs-dev CLI\n`,
52
- });
53
- await (0, upsert_1.default)(constants_1.PROFILE_PATH, `source ${constants_1.EXPORTS_FILE_PATH}`);
54
- await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
55
- await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
56
- }
57
- else {
58
- spinner.info(`Using current MODDABLE env: ${process.env.MODDABLE}`);
59
- }
52
+ process.env.MODDABLE = constants_1.INSTALL_PATH;
53
+ process.env.PATH = `${String(process.env.PATH)}:${BIN_PATH}`;
54
+ await (0, upsert_1.default)(constants_1.PROFILE_PATH, `source ${constants_1.EXPORTS_FILE_PATH}`);
55
+ await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
56
+ await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
60
57
  // 3. cd into makefiles dir for platform, run `make`
61
58
  try {
62
59
  spinner.start('Building platform tooling');
@@ -83,4 +80,4 @@ async function default_1() {
83
80
  spinner.succeed('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
84
81
  }
85
82
  exports.default = default_1;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDJDQUtvQjtBQUNwQixnRUFBdUM7QUFFeEIsS0FBSztJQUNsQixlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDdkMsTUFBTSxhQUFhLEdBQUcsaURBQWlELENBQUE7SUFFdkUsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBRUQsdURBQXVEO0lBQ3ZELElBQUk7UUFDRixNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLGVBQUssQ0FBQyxLQUFLLENBQ1QsNEZBQTRGLENBQzdGLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUVuQywrRUFBK0U7SUFDL0UsSUFBSTtRQUNGLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtLQUM1QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNwRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FB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
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDJDQUtvQjtBQUNwQixnRUFBdUM7QUFFeEIsS0FBSztJQUNsQixlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDdkMsTUFBTSxhQUFhLEdBQUcsaURBQWlELENBQUE7SUFFdkUsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBRUQsdURBQXVEO0lBQ3ZELElBQUk7UUFDRixNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLGVBQUssQ0FBQyxLQUFLLENBQ1QsNEZBQTRGLENBQzdGLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUVuQywrRUFBK0U7SUFDL0UsSUFBSTtRQUNGLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtRQUUzQixJQUFJLG9CQUFVLENBQUMsTUFBTSxDQUFDLDZCQUFpQixDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2xELG9CQUFVLENBQUMsSUFBSSxDQUFDLDZCQUFpQixFQUFFO2dCQUNqQyxPQUFPLEVBQUUsNkJBQTZCO2FBQ3ZD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
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moddableExists = void 0;
4
+ const gluegun_1 = require("gluegun");
5
+ function moddableExists() {
6
+ return (process.env.MODDABLE !== undefined &&
7
+ gluegun_1.filesystem.exists(process.env.MODDABLE) === 'dir');
8
+ }
9
+ exports.moddableExists = moddableExists;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9tb2RkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBb0M7QUFFcEMsU0FBZ0IsY0FBYztJQUM1QixPQUFPLENBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUztRQUNsQyxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssQ0FDbEQsQ0FBQTtBQUNILENBQUM7QUFMRCx3Q0FLQyJ9
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const gluegun_1 = require("gluegun");
7
7
  const constants_1 = require("./constants");
8
+ const moddable_1 = require("./moddable");
8
9
  const upsert_1 = __importDefault(require("../patching/upsert"));
9
10
  async function default_1() {
10
11
  const EMSDK_REPO = 'https://github.com/emscripten-core/emsdk.git';
@@ -15,7 +16,7 @@ async function default_1() {
15
16
  const spinner = gluegun_1.print.spin({ stream: process.stdout });
16
17
  spinner.start('Setting up wasm simulator tools');
17
18
  // 0. ensure wasm instal directory and Moddable exists
18
- if (process.env.MODDABLE === undefined) {
19
+ if (!(0, moddable_1.moddableExists)()) {
19
20
  spinner.fail('Moddable platform tooling required. Run `xs-dev setup` before trying again.');
20
21
  process.exit(1);
21
22
  }
@@ -85,4 +86,4 @@ async function default_1() {
85
86
  spinner.succeed(`Successfully set up wasm platform support for Moddable! Test out the setup by starting a new terminal session and running: xs-dev run --example helloworld --device wasm`);
86
87
  }
87
88
  exports.default = default_1;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3dhc20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsMkNBQTREO0FBQzVELGdFQUF1QztBQUV4QixLQUFLO0lBQ2xCLE1BQU0sVUFBVSxHQUFHLDhDQUE4QyxDQUFBO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLDZDQUE2QyxDQUFBO0lBQ25FLE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDeEQsTUFBTSxVQUFVLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3hELE1BQU0sYUFBYSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUU5RCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3RELE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtJQUVoRCxzREFBc0Q7SUFDdEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDdEMsT0FBTyxDQUFDLElBQUksQ0FDViw2RUFBNkUsQ0FDOUUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUE7SUFDdkMsb0JBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFeEIsNkRBQTZEO0lBQzdELElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENB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
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3dhc20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsMkNBQTREO0FBQzVELHlDQUEyQztBQUMzQyxnRUFBdUM7QUFFeEIsS0FBSztJQUNsQixNQUFNLFVBQVUsR0FBRyw4Q0FBOEMsQ0FBQTtJQUNqRSxNQUFNLGFBQWEsR0FBRyw2Q0FBNkMsQ0FBQTtJQUNuRSxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3hELE1BQU0sVUFBVSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN4RCxNQUFNLGFBQWEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFOUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN0RCxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7SUFFaEQsc0RBQXNEO0lBQ3RELElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRTtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUNWLDZFQUE2RSxDQUM5RSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUN2QyxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUV4Qiw2REFBNkQ7SUFDN0QsSUFBSSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FB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
@@ -0,0 +1 @@
1
+ export declare function moddableExists(): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "CLI for automating the setup and usage of Moddable XS tools",
5
5
  "types": "build/types/types.d.ts",
6
6
  "bin": {
@@ -70,5 +70,5 @@
70
70
  "snapupdate": "jest --updateSnapshot",
71
71
  "coverage": "jest --coverage"
72
72
  },
73
- "readme": "# CLI for automating the setup and usage of [Moddable XS tools](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/Moddable%20SDK%20-%20Getting%20Started.md)\n\nThe Moddable SDK and associated dev board tooling is incredibly empowering for embedded JS hardware development, however the set up process can be tedious to follow when getting started. This project aims to streamline the install and environment configuration requirements across platforms in just a few commands.\n\n**This project is a work in progress and should be considered pre-1.0.**\n\n**Feature support:**\n\n- [X] [Moddable SDK install & setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/Moddable%20SDK%20-%20Getting%20Started.md)\n- [X] [ESP32 SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/esp32.md)\n- [X] [ESP8266 SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/esp8266.md)\n- [ ] [Gecko SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/gecko/GeckoBuild.md)\n- [ ] [QCA4020 SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/qca4020/README.md)\n- [X] Update Moddable SDK\n- [X] Project management, including dependencies\n- [X] WASM simulator\n- [ ] Raspberry Pi Pico\n\n**Platform support:**\n\n- [X] Mac\n- [ ] Windows\n- [ ] Linux\n\n## Requirements\n\n[Node.js >= v12](https://nodejs.org/en/)\n\n## Install\n\n```\nnpm install -g xs-dev\n```\n\n## Features\n\n### Moddable SDK install / setup / update\n\nThis process mostly automates the instructions provided by Moddable's \"Getting Started\" documentation with a few exceptions:\n\n- it will not install XCode, just ensures the command line tools are available\n- the `moddable` git repo is cloned into `~/.local/share` instead of a new/existing `~/Projects` directory\n- a symlink for `xsbug.app` is created in `/Applications` for easy access through Launchpad (on Mac)\n\nRun script for initial setup:\n\n```\nxs-dev setup\n```\n\nRun script for updating SDK:\n\n```\nxs-dev update\n```\n\n### ESP32 SDK install / setup\n\nThis process automates the instructions for downloading and building the esp-idf SDK tooling. This tooling will be placed in the `~/.local/share/esp32` directory, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=esp32\n```\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=esp32\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n### ESP8266 SDK install / setup\n\nThis process automates the instructions for downloading all the dependencies for the ESP8266 RTOS SDK. These dependencies will be placed in the `~/.local/share/esp` directory, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=esp8266\n```\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=esp8266\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n### Wasm Simulator install / setup\n\nThis process automates the instructions for downloading all the dependencies for the [wasm simulator](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/wasm.md) and building the Moddable tooling. These dependencies will be placed in `~/.local/share/wasm`, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=wasm\n```\n\n_If there are issues building the Moddable wasm tools, please try running `eval $SHELL` or starting a new shell insance before running the setup script again._\n\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=wasm\n```\n\n### Run Moddable examples\n\nWhile it is still possible to run the Moddable example projects in the documented workflow:\n\n```\ncd $MODDABLE/examples/<example directory>\nmcconfig -d -m -p <platform here>\n```\n\nThis tool aims to simplify that process.\n\nList available examples:\n```\nxs-dev run --list-examples\n```\n\nRun an example (coming soon):\n```\nxs-dev run --example helloworld\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n## Project management\n\n### Start a project\n\n\n```\nxs-dev init my-project\n```\n\nCreates a `main.js` and base configured `manifest.json` for running in the simulator.\n\nFlags:\n\n- `typescript`: includes typings and creates `main.ts` (experimental)\n- `io`: includes [TC53 IO manifest](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/io/io.md)\n\n### Build and run a project\n\nIn the project directory:\n\n```\nxs-dev run\n```\n\nWhen not in the project directory:\n\n```\nxs-dev run path/to/project\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n### Add a Moddable module\n\n```\nxs-dev include network/wifi\n```\n\nOr select from available modules:\n\n```\nxs-dev include\n```\n\nUpdates the `manifest.json` with the path to the dependency.\n\n### Add a remote dependency (Coming soon)\n\n```\nxs-dev get dtex/j5e\n```\n\nAssumes the dependency is a GitHub repo, clones it to `~/.local/share`, creates an environment variable with the name of the repo, and updates the `manifest.json` with the path to that dependency.\n\nTo include a specific module for the installed dependency:\n\n```\nxs-dev include j5e/lib/led\n```\n\n### Remove a dependency\n\n```\nxs-dev remove network/wifi\n```\n\nUpdates the `manifest.json` to remove the dependency.\n\n## Development\n\nClone the project and install dependencies. We're using [pnpm](https://pnpm.io/) and [volta](https://volta.sh/) to manage packages and Node.\n\n```\ngit clone https://github.com/HipsterBrown/xs-dev.git\ncd xs-dev\npnpm install\n```\n\nLink dev version of CLI:\n\n```\npnpm link .\n```\n"
73
+ "readme": "# CLI for automating the setup and usage of [Moddable XS tools](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/Moddable%20SDK%20-%20Getting%20Started.md)\n\nThe Moddable SDK and associated dev board tooling is incredibly empowering for embedded JS hardware development, however the set up process can be tedious to follow when getting started. This project aims to streamline the install and environment configuration requirements across platforms in just a few commands.\n\n**This project is a work in progress and should be considered pre-1.0.**\n\n**Feature support:**\n\n- [X] [Moddable SDK install & setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/Moddable%20SDK%20-%20Getting%20Started.md)\n- [X] [ESP32 SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/esp32.md)\n- [X] [ESP8266 SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/esp8266.md)\n- [ ] [Gecko SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/gecko/GeckoBuild.md)\n- [ ] [QCA4020 SDK setup](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/qca4020/README.md)\n- [X] Update Moddable SDK\n- [X] Project management, including dependencies\n- [X] WASM simulator\n- [ ] Raspberry Pi Pico\n\n**Platform support:**\n\n- [X] Mac\n- [ ] Windows\n- [ ] Linux\n\n## Requirements\n\n[Node.js >= v12](https://nodejs.org/en/)\n\n## Install\n\n```\nnpm install -g xs-dev\n```\n\n## Features\n\n### Moddable SDK setup / update / teardown\n\nThis process mostly automates the instructions provided by Moddable's \"Getting Started\" documentation with a few exceptions:\n\n- it will not install XCode, just ensures the command line tools are available\n- the `moddable` git repo is cloned into `~/.local/share` instead of a new/existing `~/Projects` directory\n- a symlink for `xsbug.app` is created in `/Applications` for easy access through Launchpad (on Mac)\n\nRun script for initial setup:\n\n```\nxs-dev setup\n```\n\nRun script for updating SDK:\n\n```\nxs-dev update\n```\n\nRemove all setup and environment changes with teardown command:\n\n```\nxs-dev teardown\n```\n\n### ESP32 SDK install / setup\n\nThis process automates the instructions for downloading and building the esp-idf SDK tooling. This tooling will be placed in the `~/.local/share/esp32` directory, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=esp32\n```\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=esp32\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n### ESP8266 SDK install / setup\n\nThis process automates the instructions for downloading all the dependencies for the ESP8266 RTOS SDK. These dependencies will be placed in the `~/.local/share/esp` directory, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=esp8266\n```\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=esp8266\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n### Wasm Simulator install / setup\n\nThis process automates the instructions for downloading all the dependencies for the [wasm simulator](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/wasm.md) and building the Moddable tooling. These dependencies will be placed in `~/.local/share/wasm`, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=wasm\n```\n\n_If there are issues building the Moddable wasm tools, please try running `eval $SHELL` or starting a new shell insance before running the setup script again._\n\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=wasm\n```\n\n### Run Moddable examples\n\nWhile it is still possible to run the Moddable example projects in the documented workflow:\n\n```\ncd $MODDABLE/examples/<example directory>\nmcconfig -d -m -p <platform here>\n```\n\nThis tool aims to simplify that process.\n\nList available examples:\n```\nxs-dev run --list-examples\n```\n\nRun an example (coming soon):\n```\nxs-dev run --example helloworld\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n## Project management\n\n### Start a project\n\n\n```\nxs-dev init my-project\n```\n\nCreates a `main.js` and base configured `manifest.json` for running in the simulator.\n\nFlags:\n\n- `typescript`: includes typings and creates `main.ts` (experimental)\n- `io`: includes [TC53 IO manifest](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/io/io.md)\n\n### Build and run a project\n\nIn the project directory:\n\n```\nxs-dev run\n```\n\nWhen not in the project directory:\n\n```\nxs-dev run path/to/project\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | [any of the allowed platform identifiers](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#arguments) (defaults to current OS platform)\n- `port`: path to port for connected device (defaults to: `UPLOAD_PORT` environment variable)\n\n### Add a Moddable module\n\n```\nxs-dev include network/wifi\n```\n\nOr select from available modules:\n\n```\nxs-dev include\n```\n\nUpdates the `manifest.json` with the path to the dependency.\n\n### Add a remote dependency (Coming soon)\n\n```\nxs-dev get dtex/j5e\n```\n\nAssumes the dependency is a GitHub repo, clones it to `~/.local/share`, creates an environment variable with the name of the repo, and updates the `manifest.json` with the path to that dependency.\n\nTo include a specific module for the installed dependency:\n\n```\nxs-dev include j5e/lib/led\n```\n\n### Remove a dependency\n\n```\nxs-dev remove network/wifi\n```\n\nUpdates the `manifest.json` to remove the dependency.\n\n## Development\n\nClone the project and install dependencies. We're using [pnpm](https://pnpm.io/) and [volta](https://volta.sh/) to manage packages and Node.\n\n```\ngit clone https://github.com/HipsterBrown/xs-dev.git\ncd xs-dev\npnpm install\n```\n\nLink dev version of CLI:\n\n```\npnpm link .\n```\n"
74
74
  }