xs-dev 0.10.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,7 +37,7 @@ npm install -g xs-dev
37
37
  ## Update
38
38
 
39
39
  ```
40
- npm update -g xs-dev@latest
40
+ npm update -g xs-dev
41
41
  ```
42
42
 
43
43
  ## Features
@@ -185,12 +185,32 @@ Flags:
185
185
  xs-dev init my-project
186
186
  ```
187
187
 
188
- Creates a `main.js` and base configured `manifest.json` for running in the simulator.
188
+ Creates a `main.js` and minimally configured `manifest.json` for running in the simulator.
189
189
 
190
190
  Flags:
191
191
 
192
192
  - `typescript`: includes typings and creates `main.ts` (experimental)
193
193
  - `io`: includes [TC53 IO manifest](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/io/io.md)
194
+ - `example`: use [Moddable example project](https://github.com/Moddable-OpenSource/moddable/tree/public/examples) as base for new project
195
+ - `overwrite`: replace any existing directory of the same name
196
+
197
+ For the example flag, it can be used as a boolean to select a project from a list:
198
+
199
+ ```
200
+ xs-dev init my-project --example
201
+ ```
202
+
203
+ Or select from a filtered list of projects:
204
+
205
+ ```
206
+ xs-dev init my-project --example http
207
+ ```
208
+
209
+ Or if the complete example name is passed, it will be selected by default:
210
+
211
+ ```
212
+ xs-dev init my-project --example network/mqtt/mqttbasic
213
+ ```
194
214
 
195
215
  ### Build and run a project
196
216
 
@@ -20,23 +20,33 @@ const command = {
20
20
  const choices = modules !== undefined
21
21
  ? modules.map((mod) => (0, choices_1.collectChoicesFromTree)(mod)).flat()
22
22
  : [];
23
+ const filtered = (moduleName !== undefined) ? choices.filter((mod) => mod.includes(String(moduleName))) : choices;
23
24
  const { mod: selectedModule } = await prompt.ask([
24
25
  {
25
26
  type: 'autocomplete',
26
27
  name: 'mod',
27
28
  message: 'Here are the available modules:',
28
- choices,
29
+ choices: (filtered.length > 0) ? filtered : choices,
29
30
  },
30
31
  ]);
31
32
  moduleName = selectedModule;
32
33
  }
33
34
  print.info(`Adding "${String(moduleName)}" to manifest includes`);
35
+ const modulePath = `$(MODDABLE)/modules/${String(moduleName)}/manifest.json`;
34
36
  await patching.update(manifestPath, (manifest) => {
35
- manifest.include.push(`$(MODDABLE)/modules/${String(moduleName)}/manifest.json`);
37
+ if (!("include" in manifest))
38
+ manifest.include = [];
39
+ if (typeof manifest.include === "string")
40
+ manifest.include = [manifest.include];
41
+ if (manifest.include.includes(modulePath) === false) {
42
+ manifest.include.push(modulePath);
43
+ }
44
+ if (manifest.include.length === 1)
45
+ manifest.include = manifest.include[0];
36
46
  return manifest;
37
47
  });
38
48
  print.success('Done!');
39
49
  },
40
50
  };
41
51
  exports.default = command;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmNsdWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsdURBQWtFO0FBRWxFLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSwyREFBMkQ7SUFDeEUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFOztRQUNqRSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUN2RSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQzdDLEtBQUssQ0FBQyxLQUFLLENBQ1Qsc0ZBQXNGLENBQ3ZGLENBQUE7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO1FBQ0QsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQzVCLFNBQVMsQ0FDVixDQUFBO1FBQ0QsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtRQUVqQyxJQUNFLFVBQVUsS0FBSyxTQUFTO1lBQ3hCLFVBQVUsQ0FBQyxNQUFNLENBQ2YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUM3RCxLQUFLLEtBQUssRUFDWDtZQUNBLDZDQUE2QztZQUM3QyxNQUFNLE9BQU8sR0FBRyxNQUFBLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLDBDQUFFLFFBQVEsQ0FBQTtZQUM3RCxNQUFNLE9BQU8sR0FDWCxPQUFPLEtBQUssU0FBUztnQkFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUEsZ0NBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7Z0JBQzFELENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDUixNQUFNLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDL0M7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxLQUFLO29CQUNYLE9BQU8sRUFBRSxpQ0FBaUM7b0JBQzFDLE9BQU87aUJBQ1I7YUFDRixDQUFDLENBQUE7WUFDRixVQUFVLEdBQUcsY0FBYyxDQUFBO1NBQzVCO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUNqRSxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDL0MsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ25CLHVCQUF1QixNQUFNLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUMxRCxDQUFBO1lBQ0QsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7UUFDRixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hCLENBQUM7Q0FDRixDQUFBO0FBRUQsa0JBQWUsT0FBTyxDQUFBIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmNsdWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsdURBQWtFO0FBRWxFLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSwyREFBMkQ7SUFDeEUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFOztRQUNqRSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUN2RSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQzdDLEtBQUssQ0FBQyxLQUFLLENBQ1Qsc0ZBQXNGLENBQ3ZGLENBQUE7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO1FBQ0QsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQzVCLFNBQVMsQ0FDVixDQUFBO1FBQ0QsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtRQUVqQyxJQUNFLFVBQVUsS0FBSyxTQUFTO1lBQ3hCLFVBQVUsQ0FBQyxNQUFNLENBQ2YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUM3RCxLQUFLLEtBQUssRUFDWDtZQUNBLDZDQUE2QztZQUM3QyxNQUFNLE9BQU8sR0FBRyxNQUFBLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLDBDQUFFLFFBQVEsQ0FBQTtZQUM3RCxNQUFNLE9BQU8sR0FDWCxPQUFPLEtBQUssU0FBUztnQkFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUEsZ0NBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7Z0JBQzFELENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDUixNQUFNLFFBQVEsR0FBRyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7WUFDekgsTUFBTSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQy9DO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxPQUFPLEVBQUUsaUNBQWlDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU87aUJBQ3BEO2FBQ0YsQ0FBQyxDQUFBO1lBQ0YsVUFBVSxHQUFHLGNBQWMsQ0FBQTtTQUM1QjtRQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDakUsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUE7UUFDNUUsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO1lBQ3ZCLElBQUksT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFFBQVE7Z0JBQ3RDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDdkMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0JBQ25ELFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNuQixVQUFVLENBQ1gsQ0FBQTthQUNGO1lBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUMvQixRQUFRLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDeEMsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7UUFDRixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hCLENBQUM7Q0FDRixDQUFBO0FBRUQsa0JBQWUsT0FBTyxDQUFBIn0=
@@ -1,36 +1,72 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const choices_1 = require("../toolbox/prompt/choices");
3
4
  const command = {
4
5
  name: 'init',
5
6
  alias: ['i'],
6
7
  description: 'Scaffold a new Moddable XS project',
7
8
  run: async (toolbox) => {
8
- const { parameters, filesystem, template: { generate }, print: { warning, spin, info }, } = toolbox;
9
+ var _a;
10
+ const { parameters, filesystem, template: { generate }, print: { warning, info, success }, prompt, } = toolbox;
9
11
  const name = parameters.first;
10
- const { typescript = false, io = false } = parameters.options;
12
+ const { typescript = false, io = false, example = false, overwrite = false, } = parameters.options;
11
13
  if (name !== undefined) {
12
- const spinner = spin();
13
- spinner.start(`Generating Moddable project: ${name}`);
14
- filesystem.dir(name);
15
- const includes = [
16
- io
17
- ? '"$(MODDABLE)/modules/io/manifest.json"'
18
- : '"$(MODDABLE)/examples/manifest_base.json"',
19
- typescript && '"$(MODDABLE)/examples/manifest_typings.json"',
20
- ]
21
- .filter(Boolean)
22
- .join(',\n\t');
23
- await generate({
24
- template: 'manifest.json.ejs',
25
- target: `${name}/manifest.json`,
26
- props: { includes },
27
- });
28
- await generate({
29
- template: 'main.js.ejs',
30
- target: `${name}/main.${typescript ? 'ts' : 'js'}`,
31
- });
32
- spinner.succeed();
33
- info('Run the project using: xs-dev run');
14
+ if (!overwrite && filesystem.isDirectory(name)) {
15
+ warning(`Directory called ${name} already exists. Please pass the --overwrite flag to replace an existing project.`);
16
+ process.exit(0);
17
+ }
18
+ if (example !== false) {
19
+ // find example project
20
+ const exampleProjectPath = filesystem.resolve(String(process.env.MODDABLE), 'examples');
21
+ const examples = (_a = filesystem.inspectTree(exampleProjectPath)) === null || _a === void 0 ? void 0 : _a.children;
22
+ const choices = examples !== undefined
23
+ ? examples.map((example) => (0, choices_1.collectChoicesFromTree)(example)).flat()
24
+ : [];
25
+ let selectedExample = choices.find((choice) => choice === example);
26
+ if (example === true || selectedExample === undefined) {
27
+ const filteredChoices = choices.filter((choice) => choice.includes(String(example)));
28
+ ({ example: selectedExample } = await prompt.ask([
29
+ {
30
+ type: 'autocomplete',
31
+ name: 'example',
32
+ message: 'Here are the available examples templates:',
33
+ choices: filteredChoices.length > 0 ? filteredChoices : choices,
34
+ },
35
+ ]));
36
+ }
37
+ // copy files into new project directory
38
+ if (selectedExample !== '' && selectedExample !== undefined) {
39
+ const selectedExamplePath = filesystem.resolve(exampleProjectPath, selectedExample);
40
+ info(`Generating project directory from ${selectedExample}`);
41
+ filesystem.copy(selectedExamplePath, name);
42
+ }
43
+ else {
44
+ warning('Please select an example template to use.');
45
+ process.exit(0);
46
+ }
47
+ }
48
+ else {
49
+ info(`Generating Moddable project: ${name}`);
50
+ filesystem.dir(name, { empty: false });
51
+ const includes = [
52
+ io
53
+ ? '"$(MODDABLE)/modules/io/manifest.json"'
54
+ : '"$(MODDABLE)/examples/manifest_base.json"',
55
+ typescript && '"$(MODDABLE)/examples/manifest_typings.json"',
56
+ ]
57
+ .filter(Boolean)
58
+ .join(',\n\t');
59
+ await generate({
60
+ template: 'manifest.json.ejs',
61
+ target: `${name}/manifest.json`,
62
+ props: { includes },
63
+ });
64
+ await generate({
65
+ template: 'main.js.ejs',
66
+ target: `${name}/main.${typescript ? 'ts' : 'js'}`,
67
+ });
68
+ }
69
+ success(`Run the project using: cd ${name} && xs-dev run`);
34
70
  }
35
71
  else {
36
72
  warning('Name is required to generate project: xs-dev init my-project-name');
@@ -38,4 +74,4 @@ const command = {
38
74
  },
39
75
  };
40
76
  exports.default = command;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0EsTUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ1osV0FBVyxFQUFFLG9DQUFvQztJQUNqRCxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3JCLE1BQU0sRUFDSixVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUN0QixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUMvQixHQUFHLE9BQU8sQ0FBQTtRQUVYLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7UUFDN0IsTUFBTSxFQUFFLFVBQVUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFnQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBRTFFLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQTtZQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBRXJELFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFcEIsTUFBTSxRQUFRLEdBQUc7Z0JBQ2YsRUFBRTtvQkFDQSxDQUFDLENBQUMsd0NBQXdDO29CQUMxQyxDQUFDLENBQUMsMkNBQTJDO2dCQUMvQyxVQUFVLElBQUksOENBQThDO2FBQzdEO2lCQUNFLE1BQU0sQ0FBQyxPQUFPLENBQUM7aUJBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBRWhCLE1BQU0sUUFBUSxDQUFDO2dCQUNiLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLE1BQU0sRUFBRSxHQUFHLElBQUksZ0JBQWdCO2dCQUMvQixLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUU7YUFDcEIsQ0FBQyxDQUFBO1lBRUYsTUFBTSxRQUFRLENBQUM7Z0JBQ2IsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2FBQ25ELENBQUMsQ0FBQTtZQUVGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUNqQixJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtTQUMxQzthQUFNO1lBQ0wsT0FBTyxDQUNMLG1FQUFtRSxDQUNwRSxDQUFBO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsdURBQWtFO0FBU2xFLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNaLFdBQVcsRUFBRSxvQ0FBb0M7SUFDakQsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTs7UUFDckIsTUFBTSxFQUNKLFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQ3RCLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ2pDLE1BQU0sR0FDUCxHQUFHLE9BQU8sQ0FBQTtRQUVYLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7UUFDN0IsTUFBTSxFQUNKLFVBQVUsR0FBRyxLQUFLLEVBQ2xCLEVBQUUsR0FBRyxLQUFLLEVBQ1YsT0FBTyxHQUFHLEtBQUssRUFDZixTQUFTLEdBQUcsS0FBSyxHQUNsQixHQUFnQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBRW5DLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzlDLE9BQU8sQ0FDTCxvQkFBb0IsSUFBSSxtRkFBbUYsQ0FDNUcsQ0FBQTtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2hCO1lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxFQUFFO2dCQUNyQix1QkFBdUI7Z0JBQ3ZCLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQzVCLFVBQVUsQ0FDWCxD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
@@ -14,13 +14,29 @@ const command = {
14
14
  print.error('Module name is required');
15
15
  process.exit(1);
16
16
  }
17
- print.info(`Removing "${String(moduleName)}" to manifest includes`);
17
+ print.info(`Removing "${String(moduleName)}" from manifest includes`);
18
18
  await patching.update(manifestPath, (manifest) => {
19
- manifest.include = manifest.include.filter((mod) => !mod.includes(moduleName));
19
+ if (!("include" in manifest))
20
+ return;
21
+ if (typeof manifest.include === "string")
22
+ manifest.include = [manifest.include];
23
+ const length = manifest.include.length;
24
+ manifest.include = manifest.include.filter((mod) => {
25
+ const result = !mod.includes(moduleName);
26
+ if (!result)
27
+ print.info(` Removing: ${mod}`);
28
+ return result;
29
+ });
30
+ if (length === manifest.include.length)
31
+ print.error(`"${moduleName}" not found. No modules removed.`);
32
+ if (manifest.include.length === 1)
33
+ manifest.include = manifest.include[0];
34
+ else if (manifest.include.length === 0)
35
+ delete manifest.include;
20
36
  return manifest;
21
37
  });
22
38
  print.success('Done!');
23
39
  },
24
40
  };
25
41
  exports.default = command;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3JlbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsUUFBUTtJQUNkLFdBQVcsRUFBRSxnRUFBZ0U7SUFDN0UsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7UUFDekQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDdkUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUM3QyxLQUFLLENBQUMsS0FBSyxDQUNULHNGQUFzRixDQUN2RixDQUFBO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjtRQUNELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7UUFFbkMsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUNuRSxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDL0MsUUFBUSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDM0MsQ0FBQTtZQUNELE9BQU8sUUFBUSxDQUFBO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3JlbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsUUFBUTtJQUNkLFdBQVcsRUFBRSxnRUFBZ0U7SUFDN0UsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7UUFDekQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDdkUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUM3QyxLQUFLLENBQUMsS0FBSyxDQUNULHNGQUFzRixDQUN2RixDQUFBO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjtRQUNELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7UUFFbkMsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLE1BQU0sQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUNyRSxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQztnQkFDMUIsT0FBTTtZQUVSLElBQUksT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFFBQVE7Z0JBQ3RDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFdkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUE7WUFDdEMsUUFBUSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtnQkFDZCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQ3hDLElBQUksQ0FBQyxNQUFNO29CQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFBO2dCQUVqQyxPQUFPLE1BQU0sQ0FBQTtZQUNmLENBQUMsQ0FDRixDQUFBO1lBQ0QsSUFBSSxNQUFNLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUNwQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxrQ0FBa0MsQ0FBQyxDQUFBO1lBRS9ELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDL0IsUUFBUSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO2lCQUNuQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQ3BDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtZQUV6QixPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FBQTtRQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEIsQ0FBQztDQUNGLENBQUE7QUFFRCxrQkFBZSxPQUFPLENBQUEifQ==
@@ -7,16 +7,7 @@ const os_1 = require("os");
7
7
  const serve_handler_1 = __importDefault(require("serve-handler"));
8
8
  const http_1 = require("http");
9
9
  const choices_1 = require("../toolbox/prompt/choices");
10
- const DEVICE_ALIAS = Object.freeze({
11
- esp8266: 'esp',
12
- darwin: 'mac',
13
- windows_nt: 'win',
14
- linux: 'lin',
15
- esp: 'esp',
16
- esp32: 'esp32',
17
- wasm: 'wasm',
18
- pico: 'pico',
19
- });
10
+ const devices_1 = require("../toolbox/prompt/devices");
20
11
  const command = {
21
12
  name: 'run',
22
13
  description: 'Build and launch project on target device or simulator',
@@ -24,7 +15,7 @@ const command = {
24
15
  var _a, _b, _c;
25
16
  const currentPlatform = (0, os_1.type)().toLowerCase();
26
17
  const { device = currentPlatform, port, example, listExamples = false, listDevices = false, } = parameters.options;
27
- let targetPlatform = (_a = DEVICE_ALIAS[device]) !== null && _a !== void 0 ? _a : device;
18
+ let targetPlatform = (_a = devices_1.DEVICE_ALIAS[device]) !== null && _a !== void 0 ? _a : device;
28
19
  let projectPath = filesystem.resolve((_b = parameters.first) !== null && _b !== void 0 ? _b : '.');
29
20
  if (listDevices) {
30
21
  const choices = [
@@ -52,6 +43,18 @@ const command = {
52
43
  'esp32/saola_wroom',
53
44
  'esp32/saola_wrover',
54
45
  'wasm',
46
+ 'pico',
47
+ 'pico/ili9341',
48
+ 'pico/pico_display',
49
+ 'pico/pico_display_2',
50
+ 'simulator/moddable_one',
51
+ 'simulator/moddable_two',
52
+ 'simulator/moddable_three',
53
+ 'simulator/m5stickc',
54
+ 'simulator/m5paper',
55
+ 'simulator/nodemcu',
56
+ 'simulator/pico_display',
57
+ 'simulator/pico_display_2',
55
58
  ];
56
59
  const { device: selectedDevice } = await prompt.ask([
57
60
  {
@@ -113,7 +116,7 @@ const command = {
113
116
  spinner.start(`Building and running project ${projectPath} on ${targetPlatform}`);
114
117
  await system.exec(`mcconfig -d -m -p ${targetPlatform}`, {
115
118
  cwd: projectPath,
116
- stdout: process.stdout,
119
+ process,
117
120
  });
118
121
  spinner.stop();
119
122
  if (targetPlatform === 'wasm') {
@@ -125,7 +128,10 @@ const command = {
125
128
  print.info('Started server on port 8080, go to http://localhost:8080 in your browser to view the simulator');
126
129
  });
127
130
  }
131
+ else {
132
+ process.exit(0);
133
+ }
128
134
  },
129
135
  };
130
136
  exports.default = command;
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDJCQUF5QztBQUN6QyxrRUFBbUM7QUFDbkMsK0JBQW1DO0FBRW5DLHVEQUFrRTtBQVVsRSxNQUFNLFlBQVksR0FBdUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNyRSxPQUFPLEVBQUUsS0FBSztJQUNkLE1BQU0sRUFBRSxLQUFLO0lBQ2IsVUFBVSxFQUFFLEtBQUs7SUFDakIsS0FBSyxFQUFFLEtBQUs7SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUMsQ0FBQTtBQUVGLE1BQU0sT0FBTyxHQUFpQztJQUM1QyxJQUFJLEVBQUUsS0FBSztJQUNYLFdBQVcsRUFBRSx3REFBd0Q7SUFDckUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFOztRQUMvRCxNQUFNLGVBQWUsR0FBVyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBWSxDQUFBO1FBQ3RFLE1BQU0sRUFDSixNQUFNLEdBQUcsZUFBZSxFQUN4QixJQUFJLEVBQ0osT0FBTyxFQUNQLFlBQVksR0FBRyxLQUFLLEVBQ3BCLFdBQVcsR0FBRyxLQUFLLEdBQ3BCLEdBQWUsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUNsQyxJQUFJLGNBQWMsR0FBVyxNQUFBLFlBQVksQ0FBQyxNQUFNLENBQUMsbUNBQUksTUFBTSxDQUFBO1FBQzNELElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBQSxVQUFVLENBQUMsS0FBSyxtQ0FBSSxHQUFHLENBQUMsQ0FBQTtRQUU3RCxJQUFJLFdBQVcsRUFBRTtZQUNmLE1BQU0sT0FBTyxH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
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDJCQUF5QztBQUN6QyxrRUFBbUM7QUFDbkMsK0JBQW1DO0FBRW5DLHVEQUFrRTtBQUNsRSx1REFBd0Q7QUFVeEQsTUFBTSxPQUFPLEdBQWlDO0lBQzVDLElBQUksRUFBRSxLQUFLO0lBQ1gsV0FBVyxFQUFFLHdEQUF3RDtJQUNyRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7O1FBQy9ELE1BQU0sZUFBZSxHQUFXLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFZLENBQUE7UUFDdEUsTUFBTSxFQUNKLE1BQU0sR0FBRyxlQUFlLEVBQ3hCLElBQUksRUFDSixPQUFPLEVBQ1AsWUFBWSxHQUFHLEtBQUssRUFDcEIsV0FBVyxHQUFHLEtBQUssR0FDcEIsR0FBZSxVQUFVLENBQUMsT0FBTyxDQUFBO1FBQ2xDLElBQUksY0FBYyxHQUFXLE1BQUEsc0JBQVksQ0FBQyxNQUFNLENBQUMsbUNBQUksTUFBTSxDQUFBO1FBQzNELElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBQSxVQUFVLENBQUMsS0FBSyxtQ0FBSSxHQUFHLENBQUMsQ0FBQTtRQUU3RCxJQUFJLFdBQVcsRUFBRTtZQUNmLE1BQU0sT0FBTyxHQUFHO2dCQUNkLEtBQUs7Z0JBQ0wsbUJBQW1CO2dCQUNuQixrQkFBa0I7Z0JBQ2xCLG9CQUFvQjtnQkFDcEIsYUFBYTtnQkFDYixPQUFPO2dCQUNQLG9CQUFvQjtnQkFDcEIsZUFBZTtnQkFDZixlQUFlO2dCQUNmLHFCQUFxQjtnQkFDckIsb0JBQW9CO2dCQUNwQixtQkFBbUI7Z0JBQ25CLG1CQUFtQjtnQkFDbkIscUJBQXFCO2dCQUNyQixlQUFlO2dCQUNmLGtC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
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const os_1 = require("os");
7
7
  const fontbm_1 = __importDefault(require("../toolbox/setup/fontbm"));
8
+ const devices_1 = require("../toolbox/prompt/devices");
8
9
  const command = {
9
10
  name: 'setup',
10
11
  description: 'Download and build Moddable tooling for various platform targets',
@@ -13,7 +14,13 @@ const command = {
13
14
  const { device, listDevices = false, tool, } = parameters.options;
14
15
  let target = device !== null && device !== void 0 ? device : currentPlatform;
15
16
  if (device === undefined && listDevices) {
16
- const choices = ['esp8266', 'esp32', 'wasm', currentPlatform];
17
+ const choices = [
18
+ 'esp8266',
19
+ 'esp32',
20
+ 'pico',
21
+ 'wasm',
22
+ devices_1.DEVICE_ALIAS[currentPlatform],
23
+ ];
17
24
  const { device: selectedDevice } = await prompt.ask([
18
25
  {
19
26
  type: 'autocomplete',
@@ -42,4 +49,4 @@ const command = {
42
49
  },
43
50
  };
44
51
  exports.default = command;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyQkFBeUM7QUFFekMscUVBQWlEO0FBUWpELE1BQU0sT0FBTyxHQUFpQztJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFdBQVcsRUFDVCxrRUFBa0U7SUFDcEUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDbEQsTUFBTSxlQUFlLEdBQVcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQTtRQUN0RSxNQUFNLEVBQ0osTUFBTSxFQUNOLFdBQVcsR0FBRyxLQUFLLEVBQ25CLElBQUksR0FDTCxHQUFpQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBQ3BDLElBQUksTUFBTSxHQUFXLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLGVBQWUsQ0FBQTtRQUU5QyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUE7WUFDN0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ2xEO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxPQUFPLEVBQUUsd0NBQXdDO29CQUNqRCxPQUFPO2lCQUNSO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsSUFBSSxjQUFjLEtBQUssRUFBRSxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7Z0JBQ3pELE1BQU0sR0FBRyxjQUF3QixDQUFBO2FBQ2xDO2lCQUFNO2dCQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtnQkFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNoQjtTQUNGO1FBRUQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDckIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNoQjtZQUNELE1BQU0sSUFBQSxnQkFBVyxHQUFFLENBQUE7WUFDbkIsT0FBTTtTQUNQO1FBRUQsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyQkFBeUM7QUFFekMscUVBQWlEO0FBQ2pELHVEQUF3RDtBQVF4RCxNQUFNLE9BQU8sR0FBaUM7SUFDNUMsSUFBSSxFQUFFLE9BQU87SUFDYixXQUFXLEVBQ1Qsa0VBQWtFO0lBQ3BFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2xELE1BQU0sZUFBZSxHQUFXLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFZLENBQUE7UUFDdEUsTUFBTSxFQUNKLE1BQU0sRUFDTixXQUFXLEdBQUcsS0FBSyxFQUNuQixJQUFJLEdBQ0wsR0FBaUIsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUNwQyxJQUFJLE1BQU0sR0FBVyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxlQUFlLENBQUE7UUFFOUMsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLFdBQVcsRUFBRTtZQUN2QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxTQUFTO2dCQUNULE9BQU87Z0JBQ1AsTUFBTTtnQkFDTixNQUFNO2dCQUNOLHNCQUFZLENBQUMsZUFBZSxDQUFDO2FBQzlCLENBQUE7WUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDbEQ7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSx3Q0FBd0M7b0JBQ2pELE9BQU87aUJBQ1I7YUFDRixDQUFDLENBQUE7WUFFRixJQUFJLGNBQWMsS0FBSyxFQUFFLElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDekQsTUFBTSxHQUFHLGNBQXdCLENBQUE7YUFDbEM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO2dCQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2hCO1NBQ0Y7UUFFRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUNyQixLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2hCO1lBQ0QsTUFBTSxJQUFBLGdCQUFXLEdBQUUsQ0FBQTtZQUNuQixPQUFNO1NBQ1A7UUFFRCxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7Q0FDRixDQUFBO0FBRUQsa0JBQWUsT0FBTyxDQUFBIn0=
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEVICE_ALIAS = void 0;
4
+ exports.DEVICE_ALIAS = Object.freeze({
5
+ esp8266: 'esp',
6
+ darwin: 'mac',
7
+ windows_nt: 'win',
8
+ linux: 'lin',
9
+ esp: 'esp',
10
+ esp32: 'esp32',
11
+ wasm: 'wasm',
12
+ pico: 'pico',
13
+ });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3Byb21wdC9kZXZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVhLFFBQUEsWUFBWSxHQUF1QyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVFLE9BQU8sRUFBRSxLQUFLO0lBQ2QsTUFBTSxFQUFFLEtBQUs7SUFDYixVQUFVLEVBQUUsS0FBSztJQUNqQixLQUFLLEVBQUUsS0FBSztJQUNaLEdBQUcsRUFBRSxLQUFLO0lBQ1YsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,2 @@
1
+ import { Device } from '../../types';
2
+ export declare const DEVICE_ALIAS: Record<Device | 'esp8266', string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "0.10.1",
3
+ "version": "0.12.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
  "bin": {
@@ -71,5 +71,5 @@
71
71
  "snapupdate": "jest --updateSnapshot",
72
72
  "coverage": "jest --coverage"
73
73
  },
74
- "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- [X] [WASM simulator](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/wasm.md)\n- [X] [Raspberry Pi Pico](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/pico.md)\n- [X] Update Moddable SDK\n- [X] Project management, including dependencies\n\n**Platform support:**\n\n- [X] Mac\n- [ ] Windows\n- [X] Linux\n\n## Requirements\n\n[Node.js >= v12](https://nodejs.org/en/)\n\n**On Linux:**\n\nSetup commands rely on [`ssh-askpass`](https://packages.ubuntu.com/bionic/ssh-askpass) to prompt for permission when installing other tools and dependencies.\n\n## Install\n\n```\nnpm install -g xs-dev\n```\n\n## Update\n\n```\nnpm update -g xs-dev@latest\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` | `pico` | [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` | `pico` | [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### Raspberry Pi Pico SDK install / setup\n\nThis process automates the instructions for downloading all the dependencies for the Pico SDK. These dependencies will be placed in the `~/.local/share/pico` directory, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=pico\n```\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=pico\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | `pico` | [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### 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:\n```\nxs-dev run --example helloworld\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | `pico` | [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` | `pico` | [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### Scan for available devices\n\nIf the default device discovery is having trouble finding the correct port when running a project, use this command to find available ports to pass through the `--port` flag:\n\n```\n$ xs-dev scan\n\n✔ Found the following available devices!\n Port Device Features\n /dev/cu.usbserial-0001 ESP8266EX WiFi\n /dev/cu.usbserial-DN02N5XK ESP32-D0WDQ6 (revision 0) WiFi, BT, Dual Core, Coding Scheme None\n\n$ xs-dev run --port /dev/cu.usbserial-0001 --device esp8266\n```\n\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 using `pnpm`, which will override any other globally installed version:\n\n```\npnpm link --global\npnpm link --global xs-dev\n```\n\nOr create an alias to clearly denote the local version of the CLI:\n\n```\nalias local-xs-dev=$PWD/bin/xs-dev\n```\n\nTo maintain the alias between shell sessions, for example I use zsh:\n\n```\necho \"alias local-xs-dev=$PWD/bin/xs-dev\" >> ~/.zshrc\n```\n"
74
+ "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- [X] [WASM simulator](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/wasm.md)\n- [X] [Raspberry Pi Pico](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/pico.md)\n- [X] Update Moddable SDK\n- [X] Project management, including dependencies\n\n**Platform support:**\n\n- [X] Mac\n- [ ] Windows\n- [X] Linux\n\n## Requirements\n\n[Node.js >= v12](https://nodejs.org/en/)\n\n**On Linux:**\n\nSetup commands rely on [`ssh-askpass`](https://packages.ubuntu.com/bionic/ssh-askpass) to prompt for permission when installing other tools and dependencies.\n\n## Install\n\n```\nnpm install -g xs-dev\n```\n\n## Update\n\n```\nnpm update -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` | `pico` | [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` | `pico` | [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### Raspberry Pi Pico SDK install / setup\n\nThis process automates the instructions for downloading all the dependencies for the Pico SDK. These dependencies will be placed in the `~/.local/share/pico` directory, which will be created if it doesn't exist.\n\nRun script for platform setup:\n\n```\nxs-dev setup --device=pico\n```\n\nRun script to confirm the setup:\n\n```\nxs-dev run --example helloworld --device=pico\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | `pico` | [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### 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:\n```\nxs-dev run --example helloworld\n```\n\nFlags:\n\n- `device`: `esp8266` | `esp32` | `pico` | [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 minimally 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- `example`: use [Moddable example project](https://github.com/Moddable-OpenSource/moddable/tree/public/examples) as base for new project\n- `overwrite`: replace any existing directory of the same name\n\nFor the example flag, it can be used as a boolean to select a project from a list:\n\n```\nxs-dev init my-project --example\n```\n\nOr select from a filtered list of projects:\n\n```\nxs-dev init my-project --example http\n```\n\nOr if the complete example name is passed, it will be selected by default:\n\n```\nxs-dev init my-project --example network/mqtt/mqttbasic\n```\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` | `pico` | [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### Scan for available devices\n\nIf the default device discovery is having trouble finding the correct port when running a project, use this command to find available ports to pass through the `--port` flag:\n\n```\n$ xs-dev scan\n\n✔ Found the following available devices!\n Port Device Features\n /dev/cu.usbserial-0001 ESP8266EX WiFi\n /dev/cu.usbserial-DN02N5XK ESP32-D0WDQ6 (revision 0) WiFi, BT, Dual Core, Coding Scheme None\n\n$ xs-dev run --port /dev/cu.usbserial-0001 --device esp8266\n```\n\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 using `pnpm`, which will override any other globally installed version:\n\n```\npnpm link --global\npnpm link --global xs-dev\n```\n\nOr create an alias to clearly denote the local version of the CLI:\n\n```\nalias local-xs-dev=$PWD/bin/xs-dev\n```\n\nTo maintain the alias between shell sessions, for example I use zsh:\n\n```\necho \"alias local-xs-dev=$PWD/bin/xs-dev\" >> ~/.zshrc\n```\n"
75
75
  }