xs-dev 0.31.1 → 0.32.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.
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const os_1 = require("os");
4
+ const devices_1 = require("../toolbox/prompt/devices");
5
+ const command = {
6
+ name: 'clean',
7
+ description: 'Remove build artifacts for project',
8
+ run: async ({ parameters, filesystem, build }) => {
9
+ var _a, _b, _c;
10
+ const currentPlatform = (0, os_1.type)().toLowerCase();
11
+ const { device = currentPlatform, example, listExamples = false, listDevices = false, mode = (_a = process.env.NODE_ENV) !== null && _a !== void 0 ? _a : 'development', output, config = {}, } = parameters.options;
12
+ const targetPlatform = (_b = devices_1.DEVICE_ALIAS[device]) !== null && _b !== void 0 ? _b : device;
13
+ const projectPath = filesystem.resolve((_c = parameters.first) !== null && _c !== void 0 ? _c : '.');
14
+ await build({
15
+ listExamples,
16
+ listDevices,
17
+ example,
18
+ targetPlatform,
19
+ projectPath,
20
+ mode,
21
+ deployStatus: 'clean',
22
+ outputDir: output,
23
+ config,
24
+ });
25
+ },
26
+ };
27
+ exports.default = command;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY2xlYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyQkFBeUM7QUFFekMsdURBQXdEO0FBY3hELE1BQU0sT0FBTyxHQUFpQztJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFdBQVcsRUFBRSxvQ0FBb0M7SUFDakQsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTs7UUFDL0MsTUFBTSxlQUFlLEdBQVcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQTtRQUN0RSxNQUFNLEVBQ0osTUFBTSxHQUFHLGVBQWUsRUFDeEIsT0FBTyxFQUNQLFlBQVksR0FBRyxLQUFLLEVBQ3BCLFdBQVcsR0FBRyxLQUFLLEVBQ25CLElBQUksR0FBRyxNQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBaUIsbUNBQUksYUFBYSxFQUN0RCxNQUFNLEVBQ04sTUFBTSxHQUFHLEVBQUUsR0FDWixHQUFpQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBQ3BDLE1BQU0sY0FBYyxHQUFXLE1BQUEsc0JBQVksQ0FBQyxNQUFNLENBQUMsbUNBQUksTUFBTSxDQUFBO1FBQzdELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBQSxVQUFVLENBQUMsS0FBSyxtQ0FBSSxHQUFHLENBQUMsQ0FBQTtRQUUvRCxNQUFNLEtBQUssQ0FBQztZQUNWLFlBQVk7WUFDWixXQUFXO1lBQ1gsT0FBTztZQUNQLGNBQWM7WUFDZCxXQUFXO1lBQ1gsSUFBSTtZQUNKLFlBQVksRUFBRSxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLE1BQU07U0FDUCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const os_1 = require("os");
4
+ const devices_1 = require("../toolbox/prompt/devices");
5
+ const command = {
6
+ name: 'debug',
7
+ description: 'Connect to running debugging session on target device or simulator',
8
+ run: async ({ parameters, filesystem, build }) => {
9
+ var _a, _b, _c;
10
+ const currentPlatform = (0, os_1.type)().toLowerCase();
11
+ const { device = currentPlatform, port, example, listExamples = false, listDevices = false, log = false, mode = (_a = process.env.NODE_ENV) !== null && _a !== void 0 ? _a : 'development', output, } = parameters.options;
12
+ const targetPlatform = (_b = devices_1.DEVICE_ALIAS[device]) !== null && _b !== void 0 ? _b : device;
13
+ const projectPath = filesystem.resolve((_c = parameters.first) !== null && _c !== void 0 ? _c : '.');
14
+ await build({
15
+ port,
16
+ listExamples,
17
+ listDevices,
18
+ log,
19
+ example,
20
+ targetPlatform,
21
+ projectPath,
22
+ mode,
23
+ deployStatus: 'debug',
24
+ outputDir: output,
25
+ });
26
+ },
27
+ };
28
+ exports.default = command;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyQkFBeUM7QUFFekMsdURBQXdEO0FBZXhELE1BQU0sT0FBTyxHQUFpQztJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFdBQVcsRUFDVCxvRUFBb0U7SUFDdEUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTs7UUFDL0MsTUFBTSxlQUFlLEdBQVcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQTtRQUN0RSxNQUFNLEVBQ0osTUFBTSxHQUFHLGVBQWUsRUFDeEIsSUFBSSxFQUNKLE9BQU8sRUFDUCxZQUFZLEdBQUcsS0FBSyxFQUNwQixXQUFXLEdBQUcsS0FBSyxFQUNuQixHQUFHLEdBQUcsS0FBSyxFQUNYLElBQUksR0FBRyxNQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBaUIsbUNBQUksYUFBYSxFQUN0RCxNQUFNLEdBQ1AsR0FBaUIsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUNwQyxNQUFNLGNBQWMsR0FBVyxNQUFBLHNCQUFZLENBQUMsTUFBTSxDQUFDLG1DQUFJLE1BQU0sQ0FBQTtRQUM3RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQUEsVUFBVSxDQUFDLEtBQUssbUNBQUksR0FBRyxDQUFDLENBQUE7UUFFL0QsTUFBTSxLQUFLLENBQUM7WUFDVixJQUFJO1lBQ0osWUFBWTtZQUNaLFdBQVc7WUFDWCxHQUFHO1lBQ0gsT0FBTztZQUNQLGNBQWM7WUFDZCxXQUFXO1lBQ1gsSUFBSTtZQUNKLFlBQVksRUFBRSxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRixDQUFBO0FBRUQsa0JBQWUsT0FBTyxDQUFBIn0=
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const os_1 = require("os");
7
- const fontbm_1 = __importDefault(require("../toolbox/setup/fontbm"));
8
7
  const ejectfix_1 = __importDefault(require("../toolbox/setup/ejectfix"));
9
8
  const devices_1 = require("../toolbox/prompt/devices");
10
9
  const constants_1 = require("../toolbox/setup/constants");
@@ -41,12 +40,10 @@ const command = {
41
40
  }
42
41
  }
43
42
  if (tool !== undefined) {
44
- if (!['fontbm', 'ejectfix'].includes(tool)) {
43
+ if (!['ejectfix'].includes(tool)) {
45
44
  print.warning(`Unknown tool ${tool}`);
46
45
  process.exit(1);
47
46
  }
48
- if (tool === 'fontbm')
49
- await (0, fontbm_1.default)();
50
47
  if (tool === 'ejectfix')
51
48
  await (0, ejectfix_1.default)();
52
49
  return;
@@ -68,4 +65,4 @@ const command = {
68
65
  },
69
66
  };
70
67
  exports.default = command;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyQkFBeUM7QUFFekMscUVBQWlEO0FBQ2pELHlFQUFxRDtBQUNyRCx1REFBd0Q7QUFDeEQsMERBQTBEO0FBVzFELE1BQU0sT0FBTyxHQUFpQztJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFdBQVcsRUFDVCxrRUFBa0U7SUFDcEUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDbEQsTUFBTSxlQUFlLEdBQVcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQTtRQUN0RSxNQUFNLEVBQ0osTUFBTSxFQUNOLFdBQVcsR0FBRyxLQUFLLEVBQ25CLElBQUksRUFDSixZQUFZLEdBQUcsZ0JBQWdCLEVBQy9CLFVBQVUsR0FBRyx5QkFBYSxHQUMzQixHQUFpQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBQ3BDLElBQUksTUFBTSxHQUFXLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLGVBQWUsQ0FBQTtRQUU5QyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHO2dCQUNkLFNBQVM7Z0JBQ1QsT0FBTztnQkFDUCxNQUFNO2dCQUNOLE1BQU07Z0JBQ04sT0FBTztnQkFDUCxzQkFBWSxDQUFDLGVBQWUsQ0FBQzthQUM5QixDQUFBO1lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ2xEO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxPQUFPLEVBQUUsd0NBQXdDO29CQUNqRCxPQUFPO2lCQUNSO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsSUFBSSxjQUFjLEtBQUssRUFBRSxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7Z0JBQ3pELE1BQU0sR0FBRyxjQUF3QixDQUFBO2FBQ2xDO2lCQUFNO2dCQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtnQkFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNoQjtTQUNGO1FBRUQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUE7Z0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDaEI7WUFDRCxJQUFJLElBQUksS0FBSyxRQUFRO2dCQUFFLE1BQU0sSUFBQSxnQkFBVyxHQUFFLENBQUE7WUFDMUMsSUFBSSxJQUFJLEtBQUssVUFBVTtnQkFBRSxNQUFNLElBQUEsa0JBQWEsR0FBRSxDQUFBO1lBQzlDLE9BQU07U0FDUDtRQUNELE1BQU0sZUFBZSxHQUFhO1lBQ2hDLEtBQUs7WUFDTCxRQUFRO1lBQ1IsWUFBWTtZQUNaLEtBQUs7WUFDTCxLQUFLO1lBQ0wsT0FBTztTQUNSLENBQUE7UUFDRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtTQUNsRDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO1NBQ3RDO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUFFRCxrQkFBZSxPQUFPLENBQUEifQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyQkFBeUM7QUFFekMseUVBQXFEO0FBQ3JELHVEQUF3RDtBQUN4RCwwREFBMEQ7QUFXMUQsTUFBTSxPQUFPLEdBQWlDO0lBQzVDLElBQUksRUFBRSxPQUFPO0lBQ2IsV0FBVyxFQUNULGtFQUFrRTtJQUNwRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUNsRCxNQUFNLGVBQWUsR0FBVyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBWSxDQUFBO1FBQ3RFLE1BQU0sRUFDSixNQUFNLEVBQ04sV0FBVyxHQUFHLEtBQUssRUFDbkIsSUFBSSxFQUNKLFlBQVksR0FBRyxnQkFBZ0IsRUFDL0IsVUFBVSxHQUFHLHlCQUFhLEdBQzNCLEdBQWlCLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFDcEMsSUFBSSxNQUFNLEdBQVcsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksZUFBZSxDQUFBO1FBRTlDLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxXQUFXLEVBQUU7WUFDdkMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsU0FBUztnQkFDVCxPQUFPO2dCQUNQLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixPQUFPO2dCQUNQLHNCQUFZLENBQUMsZUFBZSxDQUFDO2FBQzlCLENBQUE7WUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDbEQ7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSx3Q0FBd0M7b0JBQ2pELE9BQU87aUJBQ1I7YUFDRixDQUFDLENBQUE7WUFFRixJQUFJLGNBQWMsS0FBSyxFQUFFLElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDekQsTUFBTSxHQUFHLGNBQXdCLENBQUE7YUFDbEM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO2dCQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2hCO1NBQ0Y7UUFFRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2hCO1lBQ0QsSUFBSSxJQUFJLEtBQUssVUFBVTtnQkFBRSxNQUFNLElBQUEsa0JBQWEsR0FBRSxDQUFBO1lBQzlDLE9BQU07U0FDUDtRQUNELE1BQU0sZUFBZSxHQUFhO1lBQ2hDLEtBQUs7WUFDTCxRQUFRO1lBQ1IsWUFBWTtZQUNaLEtBQUs7WUFDTCxLQUFLO1lBQ0wsT0FBTztTQUNSLENBQUE7UUFDRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtTQUNsRDthQUFNO1lBQ0wsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO1NBQ3RDO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUFFRCxrQkFBZSxPQUFPLENBQUEifQ==
@@ -13,6 +13,13 @@ const choices_1 = require("../prompt/choices");
13
13
  const moddable_1 = require("../setup/moddable");
14
14
  const devices_1 = require("../prompt/devices");
15
15
  const exec_1 = require("../system/exec");
16
+ const DEPLOY_TARGET = Object.freeze({
17
+ clean: 'clean',
18
+ debug: 'xsbug',
19
+ none: 'build',
20
+ push: 'build',
21
+ run: 'all',
22
+ });
16
23
  async function build({ listDevices, port, example, listExamples, log = false, projectPath, targetPlatform, mode, deployStatus, outputDir, config = {}, }) {
17
24
  var _a, _b, _c, _d, _e, _f, _g;
18
25
  const OS = (0, node_os_1.type)().toLowerCase();
@@ -185,11 +192,20 @@ async function build({ listDevices, port, example, listExamples, log = false, pr
185
192
  process.env.UPLOAD_PORT = port;
186
193
  }
187
194
  const spinner = gluegun_1.print.spin();
188
- spinner.start(`Building${deployStatus !== 'none' ? ' and deploying project' : ''} ${projectPath} on ${targetPlatform}\n`);
195
+ switch (deployStatus) {
196
+ case 'clean':
197
+ spinner.start(`Cleaning up build artifacts for project ${projectPath} on ${targetPlatform}\n`);
198
+ break;
199
+ case 'debug':
200
+ spinner.start(`Connecting to running debug session for ${projectPath} on ${targetPlatform}\n`);
201
+ break;
202
+ default:
203
+ spinner.start(`Building${deployStatus !== 'none' ? ' and deploying project' : ''} ${projectPath} on ${targetPlatform}\n`);
204
+ }
189
205
  const configArgs = [
190
206
  '-m',
191
207
  `-p ${targetPlatform}`,
192
- `-t ${deployStatus === 'run' ? 'all' : 'build'}`,
208
+ `-t ${DEPLOY_TARGET[deployStatus]}`,
193
209
  `-o ${outputDir}`,
194
210
  ];
195
211
  if (mode === 'development')
@@ -259,4 +275,4 @@ async function build({ listDevices, port, example, listExamples, log = false, pr
259
275
  }
260
276
  }
261
277
  exports.build = build;
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9idWlsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyREFBMEM7QUFDMUMscUNBQThDO0FBQzlDLGtFQUFtQztBQUNuQywrQkFBbUM7QUFDbkMscUNBQTJEO0FBQzNELCtDQUEwRDtBQUMxRCxnREFBa0Q7QUFDbEQsK0NBQWdEO0FBRWhELHlDQUFrRDtBQWtCM0MsS0FBSyxVQUFVLEtBQUssQ0FBQyxFQUMxQixXQUFXLEVBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxZQUFZLEVBQ1osR0FBRyxHQUFHLEtBQUssRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLElBQUksRUFDSixZQUFZLEVBQ1osU0FBUyxFQUNULE1BQU0sR0FBRyxFQUFFLEdBQ0Q7O0lBQ1YsTUFBTSxFQUFFLEdBQUcsSUFBQSxjQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQTtJQUVqRCxNQUFNLElBQUEsd0JBQWlCLEdBQUUsQ0FBQTtJQUV6QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUU7UUFDckIsZUFBSyxDQUFDLEtBQUssQ0FDVCx5REFBeUQsc0JBQVksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQ2xHLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsU0FBUyxhQUFULFNBQVMsY0FBVCxTQUFTLElBQVQsU0FBUyxHQUFLLG9CQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFBO0lBRXZFLElBQUksV0FBVyxFQUFFO1FBQ2YsTUFBTSxPQUFPLEdBQUc7WUFDZCxLQUFLO1lBQ0wsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsYUFBYTtZQUNiLE9BQU87WUFDUCxvQkFBb0I7WUFD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
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9idWlsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyREFBMEM7QUFDMUMscUNBQThDO0FBQzlDLGtFQUFtQztBQUNuQywrQkFBbUM7QUFDbkMscUNBQTJEO0FBQzNELCtDQUEwRDtBQUMxRCxnREFBa0Q7QUFDbEQsK0NBQWdEO0FBRWhELHlDQUFrRDtBQWtCbEQsTUFBTSxhQUFhLEdBQTJDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUUsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxPQUFPO0lBQ2IsSUFBSSxFQUFFLE9BQU87SUFDYixHQUFHLEVBQUUsS0FBSztDQUNYLENBQUMsQ0FBQTtBQUVLLEtBQUssVUFBVSxLQUFLLENBQUMsRUFDMUIsV0FBVyxFQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsWUFBWSxFQUNaLEdBQUcsR0FBRyxLQUFLLEVBQ1gsV0FBVyxFQUNYLGNBQWMsRUFDZCxJQUFJLEVBQ0osWUFBWSxFQUNaLFNBQVMsRUFDVCxNQUFNLEdBQUcsRUFBRSxHQUNEOztJQUNWLE1BQU0sRUFBRSxHQUFHLElBQUEsY0FBWSxHQUFFLENBQUMsV0FBVyxFQUFZLENBQUE7SUFFakQsTUFBTSxJQUFBLHdCQUFpQixHQUFFLENBQUE7SUFFekIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFO1FBQ3JCLGVBQUssQ0FBQyxLQUFLLENBQ1QseURBQXlELHNCQUFZLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUNsRyxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUVELFNBQVMsYUFBVCxTQUFTLGNBQVQsU0FBUyxJQUFULFNBQVMsR0FBSyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FB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
@@ -0,0 +1,4 @@
1
+ import type { GluegunCommand } from 'gluegun';
2
+ import type { XSDevToolbox } from '../types';
3
+ declare const command: GluegunCommand<XSDevToolbox>;
4
+ export default command;
@@ -0,0 +1,4 @@
1
+ import type { GluegunCommand } from 'gluegun';
2
+ import type { XSDevToolbox } from '../types';
3
+ declare const command: GluegunCommand<XSDevToolbox>;
4
+ export default command;
@@ -1,4 +1,4 @@
1
- export declare type DeployStatus = 'none' | 'run' | 'push';
1
+ export declare type DeployStatus = 'none' | 'run' | 'push' | 'clean' | 'debug';
2
2
  export interface BuildArgs {
3
3
  port?: string;
4
4
  example?: string;
@@ -105,3 +105,37 @@ If you want to immediately deploy the release build, use the `--deploy` flag:
105
105
  ```
106
106
  xs-dev build --deploy --device esp32
107
107
  ```
108
+
109
+ ## Connect to running debugger sessions
110
+
111
+ To conveniently restart a debugging session without redeploying the project, the `debug` command takes the same flags as the `run` command to invoke [`mcconfig`](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#mcconfig) to launch xsbug or the terminal debugger for the selected device or simulator.
112
+
113
+ ```
114
+ xs-dev debug --device esp32
115
+ ```
116
+
117
+ It even works with example projects:
118
+
119
+ ```
120
+ xs-dev debug --example helloworld
121
+ ```
122
+
123
+ The output directory can also be set using the `--output` flag, overriding the default path of `$MODDABLE/build`, where `$MODDABLE` is the location of the Moddable tooling repo on your local filesystem.
124
+
125
+ ```
126
+ xs-dev debug --output ./dist --device esp32
127
+ ```
128
+
129
+ ## Cleaning up build artifacts
130
+
131
+ The Moddable build tooling will do it's best to avoid repeating work to ensure quick incremental updates when recompiling programs or skipping compilation entirely if no changes have been made to the source code and config files. Whether it is to force a full recompile of your project or to make space on your development machine, the `clean` command is here to help! It takes the same flags as the `build` and `run` commands (except for "port" and "deploy") to invoke [`mcconfig`](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md#mcconfig) with the required `clean` target.
132
+
133
+ ```
134
+ xs-dev clean --device esp32
135
+ ```
136
+
137
+ The output directory can also be set using the `--output` flag, overriding the default path of `$MODDABLE/build`, where `$MODDABLE` is the location of the Moddable tooling repo on your local filesystem.
138
+
139
+ ```
140
+ xs-dev clean --output ./dist --device esp32
141
+ ```
@@ -75,12 +75,6 @@ There are some utilities that are not included in the Moddable SDK or other plat
75
75
 
76
76
  **Supported tools:**
77
77
 
78
- [`fontbm`](https://github.com/vladimirgamalyan/fontbm): BMFont compatible, cross-platform (Linux/macOS/Windows) command line bitmap font generator (FreeType2 based render)
79
-
80
- ```
81
- xs-dev setup --tool fontbm
82
- ```
83
-
84
78
  `ejectfix`: not a downloadable tool, rather a environment preference to disable the `DISK NOT EJECTED PROPERLY` notification while working with the nrf52 on MacOS. This will automate the process described by [the Adafruit blog](https://blog.adafruit.com/2021/05/11/how-to-tone-down-macos-big-surs-circuitpy-eject-notifications/):
85
79
 
86
80
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "0.31.1",
3
+ "version": "0.32.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": {
@@ -1,97 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const gluegun_1 = require("gluegun");
7
- const constants_1 = require("./constants");
8
- const upsert_1 = __importDefault(require("../patching/upsert"));
9
- const os_1 = require("os");
10
- const process_1 = require("process");
11
- const exec_1 = require("../system/exec");
12
- const homebrew_1 = require("./homebrew");
13
- async function default_1() {
14
- const spinner = gluegun_1.print.spin();
15
- spinner.start('Beginning setup...');
16
- const OS = (0, os_1.type)().toLowerCase();
17
- if (OS !== 'darwin' && OS !== 'linux') {
18
- gluegun_1.print.error(`OS "${OS}" not supported`);
19
- (0, process_1.exit)(1);
20
- }
21
- const FONTBM_REPO = 'https://github.com/vladimirgamalyan/fontbm.git';
22
- const FONTBM_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_DIR, 'fontbm');
23
- const FONTBM_TAG = 'v0.5.0';
24
- // 1. install cmake
25
- if (gluegun_1.system.which('cmake') === null) {
26
- if (OS === 'darwin') {
27
- try {
28
- await (0, homebrew_1.ensureHomebrew)();
29
- }
30
- catch (error) {
31
- if (error instanceof Error) {
32
- gluegun_1.print.info(`${error.message} cmake`);
33
- process.exit(1);
34
- }
35
- }
36
- spinner.start('Cmake required, installing with Homebrew');
37
- await gluegun_1.system.exec('brew install cmake', { shell: process.env.SHELL });
38
- spinner.succeed();
39
- }
40
- if (OS === 'linux') {
41
- spinner.start('CMake required, installing with apt');
42
- await (0, exec_1.execWithSudo)('apt-get install --yes build-essential cmake', {
43
- stdout: process.stdout,
44
- });
45
- spinner.succeed();
46
- }
47
- }
48
- // 2. install freetype
49
- if (OS === 'darwin') {
50
- if (gluegun_1.system.which('freetype-config') === null) {
51
- try {
52
- await (0, homebrew_1.ensureHomebrew)();
53
- }
54
- catch (error) {
55
- if (error instanceof Error) {
56
- gluegun_1.print.info(`${error.message} freetype-config`);
57
- process.exit(1);
58
- }
59
- }
60
- spinner.start('FreeType required, installing with Homebrew');
61
- await gluegun_1.system.exec('brew install freetype', { shell: process.env.SHELL });
62
- spinner.succeed();
63
- }
64
- }
65
- if (OS === 'linux') {
66
- spinner.start('Installing libfreetype-dev');
67
- await (0, exec_1.execWithSudo)('apt-get install --yes libfreetype-dev', {
68
- stdout: process.stdout,
69
- });
70
- spinner.succeed();
71
- }
72
- // 3. clone fontbm
73
- if (gluegun_1.filesystem.exists(FONTBM_DIR) === false) {
74
- spinner.start(`Cloning fontbm repo (tag "${FONTBM_TAG}")`);
75
- await gluegun_1.system.spawn(`git clone ${FONTBM_REPO} --depth 1 --single-branch --branch ${FONTBM_TAG} ${FONTBM_DIR}`);
76
- spinner.succeed();
77
- }
78
- // 4. build fontbm
79
- spinner.start('Building fontbm');
80
- await gluegun_1.system.exec('cmake .', {
81
- cwd: FONTBM_DIR,
82
- stdout: process.stdout,
83
- });
84
- await gluegun_1.system.exec('make', {
85
- cwd: FONTBM_DIR,
86
- stdout: process.stdout,
87
- });
88
- spinner.succeed();
89
- // 5. set FONTBM environment variable
90
- if (process.env.FONTBM === undefined) {
91
- process.env.FONTBM = `${FONTBM_DIR}/fontbm`;
92
- await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export FONTBM=${process.env.FONTBM}`);
93
- }
94
- spinner.succeed('fontbm successfully set up!');
95
- }
96
- exports.default = default_1;
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udGJtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvZm9udGJtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDJDQUE0RDtBQUM1RCxnRUFBdUM7QUFDdkMsMkJBQXlDO0FBQ3pDLHFDQUE4QjtBQUM5Qix5Q0FBNkM7QUFDN0MseUNBQTJDO0FBRTVCLEtBQUs7SUFDbEIsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUVuQyxNQUFNLEVBQUUsR0FBRyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3ZDLElBQUksRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLEtBQUssT0FBTyxFQUFFO1FBQ3JDLGVBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDdkMsSUFBQSxjQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUE7S0FDUjtJQUVELE1BQU0sV0FBVyxHQUFHLGdEQUFnRCxDQUFBO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDNUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFBO0lBRTNCLG1CQUFtQjtJQUNuQixJQUFJLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNsQyxJQUFJLEVBQUUsS0FBSyxRQUFRLEVBQUU7WUFDbkIsSUFBSTtnQkFDRixNQUFNLElBQUEseUJBQWMsR0FBRSxDQUFBO2FBQ3ZCO1lBQUMsT0FBTyxLQUFjLEVBQUU7Z0JBQ3ZCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtvQkFDMUIsZUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLFFB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
@@ -1 +0,0 @@
1
- export default function (): Promise<void>;