xs-dev 0.0.1 → 0.1.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 +16 -0
- package/build/commands/teardown.js +22 -0
- package/build/toolbox/setup/constants.js +3 -2
- package/build/toolbox/setup/esp32.js +33 -22
- package/build/toolbox/setup/esp8266.js +26 -20
- package/build/toolbox/setup/mac.js +23 -14
- package/build/toolbox/setup/wasm.js +42 -19
- package/build/toolbox/update/mac.js +4 -3
- package/build/types/commands/teardown.d.ts +3 -0
- package/build/types/toolbox/setup/constants.d.ts +1 -0
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -211,3 +211,19 @@ xs-dev remove network/wifi
|
|
|
211
211
|
```
|
|
212
212
|
|
|
213
213
|
Updates the `manifest.json` to remove the dependency.
|
|
214
|
+
|
|
215
|
+
## Development
|
|
216
|
+
|
|
217
|
+
Clone the project and install dependencies. We're using [pnpm](https://pnpm.io/) and [volta](https://volta.sh/) to manage packages and Node.
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
git clone https://github.com/HipsterBrown/xs-dev.git
|
|
221
|
+
cd xs-dev
|
|
222
|
+
pnpm install
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Link dev version of CLI:
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
pnpm link .
|
|
229
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../toolbox/setup/constants");
|
|
4
|
+
const command = {
|
|
5
|
+
name: 'teardown',
|
|
6
|
+
description: 'Remove all installed git repos and toolchains, unset environment changes',
|
|
7
|
+
run: async ({ print, filesystem, patching }) => {
|
|
8
|
+
const spinner = print.spin();
|
|
9
|
+
spinner.start('Tearing down Moddable tools and platform dependencies');
|
|
10
|
+
filesystem.remove(constants_1.EXPORTS_FILE_PATH);
|
|
11
|
+
filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'moddable'));
|
|
12
|
+
filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'wasm'));
|
|
13
|
+
filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'esp32'));
|
|
14
|
+
filesystem.remove(filesystem.resolve(constants_1.INSTALL_DIR, 'esp8266'));
|
|
15
|
+
await patching.patch(constants_1.PROFILE_PATH, {
|
|
16
|
+
delete: `source ${constants_1.EXPORTS_FILE_PATH}`,
|
|
17
|
+
});
|
|
18
|
+
spinner.succeed(`Clean up complete!`);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
exports.default = command;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvdGVhcmRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwwREFJbUM7QUFFbkMsTUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxVQUFVO0lBQ2hCLFdBQVcsRUFDVCwwRUFBMEU7SUFDNUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUM3QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFBO1FBRXRFLFVBQVUsQ0FBQyxNQUFNLENBQUMsNkJBQWlCLENBQUMsQ0FBQTtRQUNwQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBQzlELFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDMUQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO1FBRTdELE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyx3QkFBWSxFQUFFO1lBQ2pDLE1BQU0sRUFBRSxVQUFVLDZCQUFpQixFQUFFO1NBQ3RDLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.PROFILE_PATH = exports.PROFILE = exports.INSTALL_PATH = exports.INSTALL_DIR = exports.HOME_DIR = void 0;
|
|
4
|
+
exports.EXPORTS_FILE_PATH = exports.PROFILE_PATH = exports.PROFILE = exports.INSTALL_PATH = exports.INSTALL_DIR = exports.HOME_DIR = void 0;
|
|
5
5
|
const gluegun_1 = require("gluegun");
|
|
6
6
|
exports.HOME_DIR = gluegun_1.filesystem.homedir();
|
|
7
7
|
exports.INSTALL_DIR = gluegun_1.filesystem.resolve(exports.HOME_DIR, '.local', 'share');
|
|
@@ -16,4 +16,5 @@ exports.PROFILE = (function () {
|
|
|
16
16
|
return '.profile';
|
|
17
17
|
})();
|
|
18
18
|
exports.PROFILE_PATH = gluegun_1.filesystem.resolve(exports.HOME_DIR, exports.PROFILE);
|
|
19
|
-
|
|
19
|
+
exports.EXPORTS_FILE_PATH = gluegun_1.filesystem.resolve(exports.HOME_DIR, '.local', 'share', 'xs-dev-export.sh');
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxxQ0FBb0M7QUFFdkIsUUFBQSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUMvQixRQUFBLFdBQVcsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUM3RCxRQUFBLFlBQVksR0FDdkIsTUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsbUNBQUksb0JBQVUsQ0FBQyxPQUFPLENBQUMsbUJBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUN4RCxRQUFBLE9BQU8sR0FBRyxDQUFDOztJQUN0QixNQUFNLEtBQUssR0FBRyxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxtQ0FBSSxFQUFFLENBQUE7SUFDckMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sUUFBUSxDQUFBO0lBQzFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUM1QyxPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDLENBQUMsRUFBRSxDQUFBO0FBQ1MsUUFBQSxZQUFZLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQVEsRUFBRSxlQUFPLENBQUMsQ0FBQTtBQUNwRCxRQUFBLGlCQUFpQixHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNqRCxnQkFBUSxFQUNSLFFBQVEsRUFDUixPQUFPLEVBQ1Asa0JBQWtCLENBQ25CLENBQUEifQ==
|
|
@@ -11,64 +11,75 @@ async function default_1() {
|
|
|
11
11
|
const ESP_BRANCH = 'v4.3.1';
|
|
12
12
|
const ESP32_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_DIR, 'esp32');
|
|
13
13
|
const IDF_PATH = gluegun_1.filesystem.resolve(ESP32_DIR, 'esp-idf');
|
|
14
|
-
gluegun_1.print.
|
|
14
|
+
const spinner = gluegun_1.print.spin();
|
|
15
|
+
spinner.start('Setting up esp32 tools');
|
|
15
16
|
// 0. ensure Moddable exists
|
|
16
17
|
if (process.env.MODDABLE === undefined) {
|
|
17
|
-
|
|
18
|
+
spinner.fail('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
18
19
|
process.exit(1);
|
|
19
20
|
}
|
|
20
21
|
// 1. ensure ~/.local/share/esp32 directory
|
|
21
|
-
|
|
22
|
+
spinner.info('Ensuring esp32 install directory');
|
|
22
23
|
gluegun_1.filesystem.dir(ESP32_DIR);
|
|
24
|
+
gluegun_1.filesystem.file(constants_1.EXPORTS_FILE_PATH);
|
|
23
25
|
// 2. clone esp-idf into ~/.local/share/esp32/esp-idf
|
|
24
26
|
if (gluegun_1.filesystem.exists(IDF_PATH) === false) {
|
|
25
|
-
|
|
27
|
+
spinner.start('Cloning esp-idf repo');
|
|
26
28
|
await gluegun_1.system.spawn(`git clone -b ${ESP_BRANCH} --recursive ${ESP_IDF_REPO} ${IDF_PATH}`);
|
|
29
|
+
spinner.succeed();
|
|
27
30
|
}
|
|
28
31
|
// 3. brew install python3, cmake, ninja, dfu-util
|
|
29
|
-
|
|
32
|
+
spinner.start('Installing build dependencies: python, cmake, ninja, dfu-util');
|
|
30
33
|
if (gluegun_1.system.which('python') === null ||
|
|
31
34
|
// get python verion, check if v3
|
|
32
35
|
gluegun_1.semver.satisfies((await gluegun_1.system.exec('python --version', { trim: true }))
|
|
33
36
|
.toString()
|
|
34
37
|
.split(' ')
|
|
35
38
|
.pop(), '>= 3.x.x')) {
|
|
36
|
-
await gluegun_1.system.
|
|
39
|
+
await gluegun_1.system.exec('brew install python');
|
|
37
40
|
}
|
|
38
41
|
if (gluegun_1.system.which('cmake') === null) {
|
|
39
|
-
await gluegun_1.system.
|
|
42
|
+
await gluegun_1.system.exec('brew install cmake');
|
|
40
43
|
}
|
|
41
44
|
if (gluegun_1.system.which('ninja') === null) {
|
|
42
|
-
await gluegun_1.system.
|
|
45
|
+
await gluegun_1.system.exec('brew install ninja');
|
|
43
46
|
}
|
|
44
47
|
if (gluegun_1.system.which('dfu-util') === null) {
|
|
45
|
-
await gluegun_1.system.
|
|
48
|
+
await gluegun_1.system.exec('brew install dfu-util');
|
|
46
49
|
}
|
|
47
50
|
// 4. install pip, if needed
|
|
48
51
|
if (gluegun_1.system.which('pip3') === null) {
|
|
49
|
-
|
|
50
|
-
await gluegun_1.system.
|
|
52
|
+
spinner.start('Installing pip3');
|
|
53
|
+
await gluegun_1.system.exec('python3 -m ensurepip --user');
|
|
51
54
|
}
|
|
52
55
|
// 5. pip install pyserial, if needed
|
|
53
|
-
|
|
54
|
-
await gluegun_1.system.
|
|
56
|
+
spinner.start('Installing pyserial through pip3');
|
|
57
|
+
await gluegun_1.system.exec('python3 -m pip install pyserial');
|
|
55
58
|
// 6. append IDF_PATH env export to shell profile
|
|
56
59
|
if (process.env.IDF_PATH === undefined) {
|
|
57
|
-
|
|
60
|
+
spinner.info('Configuring $IDF_PATH');
|
|
58
61
|
process.env.IDF_PATH = IDF_PATH;
|
|
59
|
-
await (0, upsert_1.default)(constants_1.
|
|
62
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export IDF_PATH=${IDF_PATH}`);
|
|
60
63
|
}
|
|
61
64
|
// 7. cd to IDF_PATH, run install.sh
|
|
62
|
-
|
|
63
|
-
await gluegun_1.system.
|
|
65
|
+
spinner.start('Installing esp-idf tooling');
|
|
66
|
+
await gluegun_1.system.exec('./install.sh', {
|
|
67
|
+
cwd: IDF_PATH,
|
|
68
|
+
shell: process.env.SHELL,
|
|
69
|
+
stdout: process.stdout,
|
|
70
|
+
});
|
|
71
|
+
spinner.succeed();
|
|
64
72
|
// 8. append 'source $IDF_PATH/export.sh' to shell profile
|
|
65
|
-
|
|
66
|
-
await (0, upsert_1.default)(constants_1.
|
|
67
|
-
gluegun_1.
|
|
73
|
+
spinner.info('Sourcing esp-idf environment');
|
|
74
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `source $IDF_PATH/export.sh`);
|
|
75
|
+
await gluegun_1.system.exec('source $IDF_PATH/export.sh', {
|
|
76
|
+
shell: process.env.SHELL,
|
|
77
|
+
});
|
|
78
|
+
spinner.succeed(`
|
|
68
79
|
Successfully set up esp32 platform support for Moddable!
|
|
69
|
-
Test out the setup by plugging in your device and running: xs-dev run --example helloworld --device=esp32
|
|
80
|
+
Test out the setup by starting a new terminal session, plugging in your device, and running: xs-dev run --example helloworld --device=esp32
|
|
70
81
|
If there is trouble finding the correct port, pass the "--port" flag to the above command with the path to the "/dev.cu.*" that matches your device.
|
|
71
82
|
`);
|
|
72
83
|
}
|
|
73
84
|
exports.default = default_1;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3AzMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFDQUEyRDtBQUMzRCwyQ0FBNEQ7QUFDNUQsZ0VBQXVDO0FBRXhCLEtBQUs7SUFDbEIsTUFBTSxZQUFZLEdBQUcsMENBQTBDLENBQUE7SUFDL0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFBO0lBQzNCLE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDMUQsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRXpELE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFFdkMsNEJBQTRCO0lBQzVCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0VBQW9FLENBQ3JFLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtJQUNoRCxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN6QixvQkFBVSxDQUFDLElBQUksQ0FBQyw2QkFBaUIsQ0FBQyxDQUFBO0lBRWxDLHFEQUFxRDtJQUNyRCxJQUFJLG9CQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDckMsTUFBTSxnQkFBTSxDQUFDLEtBQUssQ0FD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
|
|
@@ -5,12 +5,14 @@ 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 axios_1 = __importDefault(require("axios"));
|
|
8
|
-
const
|
|
8
|
+
const stream_1 = require("stream");
|
|
9
|
+
const util_1 = require("util");
|
|
9
10
|
const tar_fs_1 = require("tar-fs");
|
|
10
11
|
const zlib_1 = require("zlib");
|
|
11
12
|
const unzip_stream_1 = require("unzip-stream");
|
|
12
13
|
const constants_1 = require("./constants");
|
|
13
14
|
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
15
|
+
const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
14
16
|
async function default_1() {
|
|
15
17
|
const TOOLCHAIN = 'https://www.moddable.com/private/esp8266.toolchain.darwin.tgz';
|
|
16
18
|
const ARDUINO_CORE = 'https://github.com/esp8266/Arduino/releases/download/2.3.0/esp8266-2.3.0.zip';
|
|
@@ -20,18 +22,19 @@ async function default_1() {
|
|
|
20
22
|
const RTOS_PATH = gluegun_1.filesystem.resolve(ESP_DIR, 'ESP8266_RTOS_SDK');
|
|
21
23
|
const TOOLCHAIN_PATH = gluegun_1.filesystem.resolve(ESP_DIR, 'toolchain');
|
|
22
24
|
const ARDUINO_CORE_PATH = gluegun_1.filesystem.resolve(ESP_DIR, 'esp8266-2.3.0');
|
|
23
|
-
gluegun_1.print.
|
|
25
|
+
const spinner = gluegun_1.print.spin();
|
|
26
|
+
spinner.start('Setting up esp8266 tools');
|
|
24
27
|
// 0. ensure Moddable exists
|
|
25
28
|
if (process.env.MODDABLE === undefined) {
|
|
26
|
-
|
|
29
|
+
spinner.fail('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
27
30
|
process.exit(1);
|
|
28
31
|
}
|
|
29
32
|
// 1. ensure ~/.local/share/esp directory
|
|
30
|
-
|
|
33
|
+
spinner.info('Ensuring esp directory');
|
|
31
34
|
gluegun_1.filesystem.dir(ESP_DIR);
|
|
35
|
+
gluegun_1.filesystem.file(constants_1.EXPORTS_FILE_PATH);
|
|
32
36
|
// 2. download and untar xtensa toolchain
|
|
33
37
|
if (gluegun_1.filesystem.exists(TOOLCHAIN_PATH) === false) {
|
|
34
|
-
const spinner = gluegun_1.print.spin();
|
|
35
38
|
spinner.start('Downloading xtensa toolchain');
|
|
36
39
|
const writer = (0, tar_fs_1.extract)(ESP_DIR, { readable: true });
|
|
37
40
|
const gunzip = (0, zlib_1.createGunzip)();
|
|
@@ -39,48 +42,51 @@ async function default_1() {
|
|
|
39
42
|
responseType: 'stream',
|
|
40
43
|
});
|
|
41
44
|
response.data.pipe(gunzip).pipe(writer);
|
|
42
|
-
await (
|
|
45
|
+
await finishedPromise(writer);
|
|
43
46
|
spinner.succeed();
|
|
44
47
|
}
|
|
45
48
|
// 3. download and unzip esp8266 core for arduino
|
|
46
49
|
if (gluegun_1.filesystem.exists(ARDUINO_CORE_PATH) === false) {
|
|
47
|
-
const spinner = gluegun_1.print.spin();
|
|
48
50
|
spinner.start('Downloading arduino core tooling');
|
|
49
51
|
const writer = (0, unzip_stream_1.Extract)({ path: ESP_DIR });
|
|
50
52
|
const response = await axios_1.default.get(ARDUINO_CORE, {
|
|
51
53
|
responseType: 'stream',
|
|
52
54
|
});
|
|
53
55
|
response.data.pipe(writer);
|
|
54
|
-
await (
|
|
56
|
+
await finishedPromise(writer);
|
|
55
57
|
spinner.succeed();
|
|
56
58
|
}
|
|
57
59
|
// 4. clone esp8266 RTOS SDK
|
|
58
60
|
if (gluegun_1.filesystem.exists(RTOS_PATH) === false) {
|
|
59
|
-
|
|
61
|
+
spinner.start('Cloning esp8266 RTOS SDK repo');
|
|
60
62
|
await gluegun_1.system.spawn(`git clone -b ${ESP_BRANCH} ${ESP_RTOS_REPO} ${RTOS_PATH}`);
|
|
63
|
+
spinner.succeed();
|
|
61
64
|
}
|
|
62
65
|
// 5. ensure python, pip, and pyserial are installed
|
|
63
66
|
if (gluegun_1.system.which('python') === null) {
|
|
64
|
-
|
|
65
|
-
await gluegun_1.system.
|
|
67
|
+
spinner.start('Installing python from homebrew');
|
|
68
|
+
await gluegun_1.system.exec('brew install python');
|
|
69
|
+
spinner.succeed();
|
|
66
70
|
}
|
|
67
71
|
if (gluegun_1.system.which('pip') === null) {
|
|
68
|
-
|
|
69
|
-
await gluegun_1.system.
|
|
72
|
+
spinner.start('Installing pip through ensurepip');
|
|
73
|
+
await gluegun_1.system.exec('python -m ensurepip');
|
|
74
|
+
spinner.succeed();
|
|
70
75
|
}
|
|
71
|
-
|
|
72
|
-
await gluegun_1.system.
|
|
76
|
+
spinner.start('Installing pyserial through pip');
|
|
77
|
+
await gluegun_1.system.exec('python -m pip install pyserial');
|
|
78
|
+
spinner.succeed();
|
|
73
79
|
// 7. create ESP_BARE env export in shell profile
|
|
74
80
|
if (process.env.ESP_BASE === undefined) {
|
|
75
|
-
|
|
81
|
+
spinner.info('Configuring $ESP_BASE');
|
|
76
82
|
process.env.ESP_BASE = ESP_DIR;
|
|
77
|
-
await (0, upsert_1.default)(constants_1.
|
|
83
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export ESP_BASE=${process.env.ESP_BASE}`);
|
|
78
84
|
}
|
|
79
|
-
|
|
85
|
+
spinner.succeed(`
|
|
80
86
|
Successfully set up esp8266 platform support for moddable!
|
|
81
|
-
Test out the setup by plugging in your device and running: xs-dev run --example helloworld --device esp8266
|
|
87
|
+
Test out the setup by starting a new terminal session, plugging in your device, and running: xs-dev run --example helloworld --device esp8266
|
|
82
88
|
If there is trouble finding the correct port, pass the "--port" flag to the above command with the path to the "/dev.cu.*" that matches your device.
|
|
83
89
|
`);
|
|
84
90
|
}
|
|
85
91
|
exports.default = default_1;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwODI2Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQXlCO0FBQ3pCLG1DQUFpQztBQUNqQywrQkFBZ0M7QUFDaEMsbUNBQWdDO0FBQ2hDLCtCQUFtQztBQUNuQywrQ0FBb0Q7QUFDcEQsMkNBQTREO0FBQzVELGdFQUF1QztBQUV2QyxNQUFNLGVBQWUsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQVEsQ0FBQyxDQUFBO0FBRTVCLEtBQUs7SUFDbEIsTUFBTSxTQUFTLEdBQ2IsK0RBQStELENBQUE7SUFDakUsTUFBTSxZQUFZLEdBQ2hCLDhFQUE4RSxDQUFBO0lBQ2hGLE1BQU0sYUFBYSxHQUFHLG1EQUFtRCxDQUFBO0lBQ3pFLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQTtJQUNqQyxNQUFNLE9BQU8sR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3RELE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sY0FBYyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUMvRCxNQUFNLGlCQUFpQixHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUV0RSxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBRXpDLDRCQUE0QjtJQUM1QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUNWLG9FQUFvRSxD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
|
|
@@ -13,29 +13,33 @@ async function default_1() {
|
|
|
13
13
|
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'mac');
|
|
14
14
|
// 0. ensure xcode command line tools are available (?)
|
|
15
15
|
try {
|
|
16
|
-
await gluegun_1.system.
|
|
16
|
+
await gluegun_1.system.exec('xcode-select -p');
|
|
17
17
|
}
|
|
18
18
|
catch (error) {
|
|
19
19
|
gluegun_1.print.error('Xcode command line tools are required to build the SDK: https://developer.apple.com/xcode/');
|
|
20
20
|
process.exit(1);
|
|
21
21
|
}
|
|
22
|
+
const spinner = gluegun_1.print.spin();
|
|
23
|
+
spinner.start('Beginning setup...');
|
|
22
24
|
// 1. clone moddable repo into ./local/share directory if it does not exist yet
|
|
23
25
|
try {
|
|
24
26
|
gluegun_1.filesystem.dir(constants_1.INSTALL_DIR);
|
|
25
27
|
}
|
|
26
28
|
catch (error) {
|
|
27
|
-
|
|
29
|
+
spinner.fail(`Error setting up install directory: ${String(error)}`);
|
|
28
30
|
process.exit(1);
|
|
29
31
|
}
|
|
30
32
|
if (gluegun_1.filesystem.exists(constants_1.INSTALL_PATH) !== false) {
|
|
31
|
-
|
|
33
|
+
spinner.info('Moddable repo already installed');
|
|
32
34
|
}
|
|
33
35
|
else {
|
|
34
36
|
try {
|
|
37
|
+
spinner.start('Cloning Moddable-OpenSource/moddable repo');
|
|
35
38
|
await gluegun_1.system.spawn(`git clone ${MODDABLE_REPO} ${constants_1.INSTALL_PATH}`);
|
|
39
|
+
spinner.succeed();
|
|
36
40
|
}
|
|
37
41
|
catch (error) {
|
|
38
|
-
|
|
42
|
+
spinner.fail(`Error cloning moddable repo: ${String(error)}`);
|
|
39
43
|
process.exit(1);
|
|
40
44
|
}
|
|
41
45
|
}
|
|
@@ -43,19 +47,24 @@ async function default_1() {
|
|
|
43
47
|
if (process.env.MODDABLE === undefined) {
|
|
44
48
|
process.env.MODDABLE = constants_1.INSTALL_PATH;
|
|
45
49
|
process.env.PATH = `${String(process.env.PATH)}:${BIN_PATH}`;
|
|
46
|
-
|
|
47
|
-
|
|
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"`);
|
|
48
56
|
}
|
|
49
57
|
else {
|
|
50
|
-
|
|
58
|
+
spinner.info(`Using current MODDABLE env: ${process.env.MODDABLE}`);
|
|
51
59
|
}
|
|
52
60
|
// 3. cd into makefiles dir for platform, run `make`
|
|
53
61
|
try {
|
|
54
|
-
|
|
55
|
-
await gluegun_1.system.
|
|
62
|
+
spinner.start('Building platform tooling');
|
|
63
|
+
await gluegun_1.system.exec('make', { cwd: BUILD_DIR });
|
|
64
|
+
spinner.succeed();
|
|
56
65
|
}
|
|
57
66
|
catch (error) {
|
|
58
|
-
|
|
67
|
+
spinner.fail(`Error building mac tooling: ${String(error)}`);
|
|
59
68
|
process.exit(1);
|
|
60
69
|
}
|
|
61
70
|
// 4. symlink xsbug.app into user applications directory
|
|
@@ -64,14 +73,14 @@ async function default_1() {
|
|
|
64
73
|
}
|
|
65
74
|
catch (error) {
|
|
66
75
|
if (!String(error).includes('exists')) {
|
|
67
|
-
|
|
76
|
+
spinner.fail(`Issue creating symlink for xsbug.app: ${String(error)}`);
|
|
68
77
|
process.exit(1);
|
|
69
78
|
}
|
|
70
79
|
else {
|
|
71
|
-
|
|
80
|
+
spinner.info('xsbug.app symlink already exists');
|
|
72
81
|
}
|
|
73
82
|
}
|
|
74
|
-
|
|
83
|
+
spinner.succeed('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
|
|
75
84
|
}
|
|
76
85
|
exports.default = default_1;
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDJDQUtvQjtBQUNwQixnRUFBdUM7QUFFeEIsS0FBSztJQUNsQixlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDdkMsTUFBTSxhQUFhLEdBQUcsaURBQWlELENBQUE7SUFFdkUsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBRUQsdURBQXVEO0lBQ3ZELElBQUk7UUFDRixNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLGVBQUssQ0FBQyxLQUFLLENBQ1QsNEZBQTRGLENBQzdGLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUVuQywrRUFBK0U7SUFDL0UsSUFBSTtRQUNGLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtLQUM1QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNwRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FB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
|
|
@@ -12,54 +12,77 @@ async function default_1() {
|
|
|
12
12
|
const WASM_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_DIR, 'wasm');
|
|
13
13
|
const EMSDK_PATH = gluegun_1.filesystem.resolve(WASM_DIR, 'emsdk');
|
|
14
14
|
const BINARYEN_PATH = gluegun_1.filesystem.resolve(WASM_DIR, 'binaryen');
|
|
15
|
-
gluegun_1.print.
|
|
15
|
+
const spinner = gluegun_1.print.spin({ stream: process.stdout });
|
|
16
|
+
spinner.start('Setting up wasm simulator tools');
|
|
16
17
|
// 0. ensure wasm instal directory and Moddable exists
|
|
17
18
|
if (process.env.MODDABLE === undefined) {
|
|
18
|
-
|
|
19
|
+
spinner.fail('Moddable platform tooling required. Run `xs-dev setup` before trying again.');
|
|
19
20
|
process.exit(1);
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
+
spinner.info('Ensuring wasm directory');
|
|
22
23
|
gluegun_1.filesystem.dir(WASM_DIR);
|
|
23
24
|
// 1. Clone EM_SDK repo, install, and activate latest version
|
|
24
25
|
if (gluegun_1.filesystem.exists(EMSDK_PATH) === false) {
|
|
25
|
-
|
|
26
|
+
spinner.start('Cloning emsdk repo');
|
|
26
27
|
try {
|
|
27
28
|
await gluegun_1.system.spawn(`git clone ${EMSDK_REPO} ${EMSDK_PATH}`);
|
|
28
|
-
|
|
29
|
+
spinner.start('Installing latest EMSDK');
|
|
30
|
+
await gluegun_1.system.exec('./emsdk install latest', {
|
|
29
31
|
cwd: EMSDK_PATH,
|
|
32
|
+
stdout: process.stdout,
|
|
30
33
|
});
|
|
31
|
-
await gluegun_1.system.
|
|
34
|
+
await gluegun_1.system.exec('./emsdk activate latest', {
|
|
32
35
|
cwd: EMSDK_PATH,
|
|
36
|
+
stdout: process.stdout,
|
|
33
37
|
});
|
|
34
38
|
}
|
|
35
39
|
catch (error) {
|
|
36
|
-
|
|
40
|
+
spinner.fail(`Error activating emsdk: ${String(error)}`);
|
|
37
41
|
process.exit(1);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
44
|
+
spinner.succeed('emsdk setup complete');
|
|
40
45
|
// 2. Clone Binaryen repo and build
|
|
41
46
|
if (gluegun_1.filesystem.exists(BINARYEN_PATH) === false) {
|
|
42
|
-
|
|
47
|
+
spinner.start('Cloning binaryen repo');
|
|
43
48
|
await gluegun_1.system.spawn(`git clone ${BINARYEN_REPO} ${BINARYEN_PATH}`);
|
|
49
|
+
spinner.info('Binaryen repo cloned');
|
|
44
50
|
if (gluegun_1.system.which('cmake') === null) {
|
|
45
|
-
|
|
46
|
-
await gluegun_1.system.
|
|
51
|
+
spinner.start('Cmake required, installing with Homebrew');
|
|
52
|
+
await gluegun_1.system.exec('brew install cmake');
|
|
47
53
|
}
|
|
48
|
-
|
|
54
|
+
spinner.start('Building Binaryen tooling');
|
|
55
|
+
await gluegun_1.system.exec('cmake .', {
|
|
49
56
|
cwd: BINARYEN_PATH,
|
|
57
|
+
stdout: process.stdout,
|
|
50
58
|
});
|
|
59
|
+
spinner.succeed('cmake complete');
|
|
60
|
+
spinner.start('Start make process, this could take a couple minutes');
|
|
61
|
+
await gluegun_1.system.exec('make', {
|
|
62
|
+
cwd: BINARYEN_PATH,
|
|
63
|
+
stdout: process.stdout,
|
|
64
|
+
});
|
|
65
|
+
spinner.succeed();
|
|
51
66
|
}
|
|
52
67
|
// 3. Setup PATH and env variables for EM_SDK and Binaryen
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
await (0, upsert_1.default)(constants_1.
|
|
68
|
+
spinner.info('Sourcing emsdk environment and adding binaryen to PATH');
|
|
69
|
+
gluegun_1.filesystem.file(constants_1.EXPORTS_FILE_PATH);
|
|
70
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `source ${gluegun_1.filesystem.resolve(EMSDK_PATH, 'emsdk_env.sh')}`);
|
|
71
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH=${gluegun_1.filesystem.resolve(BINARYEN_PATH, 'bin')}:$PATH`);
|
|
56
72
|
process.env.PATH = `${String(process.env.PATH)}:${gluegun_1.filesystem.resolve(BINARYEN_PATH, 'bin')}`;
|
|
57
73
|
// 4. Build Moddable WASM tools
|
|
58
|
-
gluegun_1.
|
|
59
|
-
|
|
60
|
-
|
|
74
|
+
if (gluegun_1.filesystem.exists(gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'build', 'bin', 'wasm')) === false) {
|
|
75
|
+
spinner.start('Building Moddable wasm tools');
|
|
76
|
+
await gluegun_1.system.exec(`make`, {
|
|
77
|
+
cwd: gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'build', 'makefiles', 'wasm'),
|
|
78
|
+
stdout: process.stdout,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
await gluegun_1.system.exec(`source ${constants_1.EXPORTS_FILE_PATH}`, {
|
|
82
|
+
shell: process.env.SHELL,
|
|
83
|
+
stdout: process.stdout,
|
|
61
84
|
});
|
|
62
|
-
|
|
85
|
+
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`);
|
|
63
86
|
}
|
|
64
87
|
exports.default = default_1;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3dhc20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsMkNBQTREO0FBQzVELGdFQUF1QztBQUV4QixLQUFLO0lBQ2xCLE1BQU0sVUFBVSxHQUFHLDhDQUE4QyxDQUFBO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLDZDQUE2QyxDQUFBO0lBQ25FLE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDeEQsTUFBTSxVQUFVLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3hELE1BQU0sYUFBYSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUU5RCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3RELE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtJQUVoRCxzREFBc0Q7SUFDdEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDdEMsT0FBTyxDQUFDLElBQUksQ0FDViw2RUFBNkUsQ0FDOUUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUE7SUFDdkMsb0JBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFeEIsNkRBQTZEO0lBQzdELElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENB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
|
|
@@ -13,15 +13,16 @@ async function default_1() {
|
|
|
13
13
|
}
|
|
14
14
|
const spinner = gluegun_1.print.spin();
|
|
15
15
|
spinner.start('Updating Moddable SDK!');
|
|
16
|
-
spinner.
|
|
16
|
+
spinner.start('Stashing any unsaved changes before committing');
|
|
17
17
|
await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
|
|
18
18
|
await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
|
|
19
19
|
await gluegun_1.system.exec('rm -rf build/{tmp,bin}', { cwd: process.env.MODDABLE });
|
|
20
|
-
spinner.
|
|
20
|
+
spinner.succeed();
|
|
21
|
+
spinner.start('Rebuilding platform tools');
|
|
21
22
|
await gluegun_1.system.exec('make', {
|
|
22
23
|
cwd: gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'build', 'makefiles', 'mac'),
|
|
23
24
|
});
|
|
24
25
|
spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
25
26
|
}
|
|
26
27
|
exports.default = default_1;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL21hYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFDQUFtRDtBQUVwQyxLQUFLO0lBQ2xCLGVBQUssQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUV0QyxNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1FBQ25FLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7S0FDMUIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxTQUFTLEdBQVcsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FDekMsd0NBQXdDLEVBQ3hDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQzlCLENBQUE7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3ZELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUV2QyxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7SUFDL0QsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzdELE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRTFFLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVqQixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDMUMsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDeEIsR0FBRyxFQUFFLG9CQUFVLENBQUMsT0FBTyxDQUNyQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDNUIsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ047S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLENBQUMsT0FBTyxDQUNiLDBIQUEwSCxDQUMzSCxDQUFBO0FBQ0gsQ0FBQztBQXZDRCw0QkF1Q0MifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xs-dev",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.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": {
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
"bin"
|
|
16
16
|
],
|
|
17
17
|
"license": "MIT",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/HipsterBrown/xs-dev.git"
|
|
21
|
+
},
|
|
18
22
|
"dependencies": {
|
|
19
23
|
"axios": "^0.24.0",
|
|
20
24
|
"gluegun": "latest",
|
|
@@ -23,6 +27,7 @@
|
|
|
23
27
|
"unzip-stream": "^0.3.1"
|
|
24
28
|
},
|
|
25
29
|
"devDependencies": {
|
|
30
|
+
"@changesets/cli": "^2.19.0",
|
|
26
31
|
"@types/jest": "^27.4.0",
|
|
27
32
|
"@types/node": "^16.11.0",
|
|
28
33
|
"@types/serve-handler": "^6.1.1",
|
|
@@ -65,5 +70,5 @@
|
|
|
65
70
|
"snapupdate": "jest --updateSnapshot",
|
|
66
71
|
"coverage": "jest --coverage"
|
|
67
72
|
},
|
|
68
|
-
"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"
|
|
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"
|
|
69
74
|
}
|