xs-dev 0.36.5 → 0.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/build/package.json +1 -1
- package/build/src/toolbox/prompt/devices.js +3 -3
- package/build/src/toolbox/setup/esp32/linux.js +27 -4
- package/build/src/toolbox/setup/esp32.js +2 -2
- package/build/src/toolbox/setup/esp8266/linux.js +15 -3
- package/build/src/toolbox/setup/lin.js +126 -0
- package/build/src/toolbox/system/exec.js +8 -1
- package/build/src/toolbox/system/packages.js +51 -0
- package/build/src/toolbox/system/types.js +3 -0
- package/build/src/toolbox/update/esp32.js +2 -2
- package/build/src/toolbox/update/lin.js +129 -0
- package/build/types/src/toolbox/system/exec.d.ts +4 -0
- package/build/types/src/toolbox/system/packages.d.ts +9 -0
- package/build/types/src/toolbox/system/types.d.ts +5 -0
- package/docs/src/content/docs/features/doctor.md +4 -4
- package/docs/src/content/docs/guide/00-prepare.md +4 -3
- package/docs/src/content/docs/guide/01-hello-console.md +4 -4
- package/package.json +1 -1
- package/build/src/toolbox/setup/linux.js +0 -116
- package/build/src/toolbox/update/linux.js +0 -129
- /package/build/types/src/toolbox/setup/{linux.d.ts → lin.d.ts} +0 -0
- /package/build/types/src/toolbox/update/{linux.d.ts → lin.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ The Moddable SDK and associated dev board tooling is incredibly empowering for e
|
|
|
10
10
|
|
|
11
11
|
## Requirements
|
|
12
12
|
|
|
13
|
-
[Node.js
|
|
13
|
+
[Node.js](https://nodejs.org/en/), at least the [active LTS version](https://nodejs.org/en/about/previous-releases#nodejs-releases).
|
|
14
14
|
|
|
15
15
|
_If you've never installed Node.js before, check out the [getting started guide for xs-dev](https://hipsterbrown.github.io/xs-dev/guide/00-prepare#nodejs-package-manager-optional)._
|
|
16
16
|
|
|
@@ -146,6 +146,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
|
146
146
|
<td align="center"><a href="https://github.com/mkellner"><img src="https://avatars.githubusercontent.com/u/6822704?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Kellner</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=mkellner" title="Code">💻</a></td>
|
|
147
147
|
<td align="center"><a href="http://brainofdane.com/"><img src="https://avatars.githubusercontent.com/u/2007067?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dane Henson</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=dahenson" title="Code">💻</a></td>
|
|
148
148
|
<td align="center"><a href="https://github.com/kitazaki"><img src="https://avatars.githubusercontent.com/u/23477407?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ayachika Kitazaki</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=kitazaki" title="Code">💻</a></td>
|
|
149
|
+
<td align="center"><a href="https://andrew.nonetoohappy.buzz/"><img src="https://avatars.githubusercontent.com/u/18542095?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andrew Chou</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=achou11" title="Code">💻</a></td>
|
|
149
150
|
</tr>
|
|
150
151
|
</table>
|
|
151
152
|
|
|
@@ -154,4 +155,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
|
154
155
|
|
|
155
156
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
156
157
|
|
|
157
|
-
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
|
158
|
+
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
package/build/package.json
CHANGED
|
@@ -9,11 +9,11 @@ exports.DEVICE_ALIAS = Object.freeze({
|
|
|
9
9
|
windows_nt: 'windows',
|
|
10
10
|
windows: 'windows',
|
|
11
11
|
win: 'windows',
|
|
12
|
-
linux: '
|
|
13
|
-
lin: '
|
|
12
|
+
linux: 'lin',
|
|
13
|
+
lin: 'lin',
|
|
14
14
|
esp32: 'esp32',
|
|
15
15
|
wasm: 'wasm',
|
|
16
16
|
pico: 'pico',
|
|
17
17
|
nrf52: 'nrf52',
|
|
18
18
|
});
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3Byb21wdC9kZXZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVhLFFBQUEsWUFBWSxHQUFtQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3hFLEdBQUcsRUFBRSxTQUFTO0lBQ2QsT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsS0FBSztJQUNWLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsS0FBSyxFQUFFLEtBQUs7SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQyxDQUFBIn0=
|
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.installDeps = installDeps;
|
|
4
|
-
const
|
|
5
|
-
// apt-get install git wget flex bison gperf python-is-python3 python3-pip python3-serial python-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util
|
|
4
|
+
const packages_1 = require("../../system/packages");
|
|
6
5
|
async function installDeps(spinner) {
|
|
7
|
-
|
|
6
|
+
const dependencies = [
|
|
7
|
+
{ name: 'bison', packageName: 'bison', type: 'binary' },
|
|
8
|
+
{ name: 'ccache', packageName: 'ccache', type: 'binary' },
|
|
9
|
+
{ name: 'cmake', packageName: 'cmake', type: 'binary' },
|
|
10
|
+
{ name: 'dfu-util', packageName: 'dfu-util', type: 'binary' },
|
|
11
|
+
{ name: 'flex', packageName: 'flex', type: 'binary' },
|
|
12
|
+
{ name: 'git', packageName: 'git', type: 'binary' },
|
|
13
|
+
{ name: 'gperf', packageName: 'gperf', type: 'binary' },
|
|
14
|
+
{ name: 'libffi', packageName: 'libffi-dev', type: 'library' },
|
|
15
|
+
{ name: 'libssl', packageName: 'libssl-dev', type: 'library' },
|
|
16
|
+
{ name: 'ninja', packageName: 'ninja-build', type: 'binary' },
|
|
17
|
+
{ name: 'pip', packageName: 'python-pip', type: 'binary' },
|
|
18
|
+
{
|
|
19
|
+
name: 'pyserial-miniterm',
|
|
20
|
+
packageName: 'python3-serial',
|
|
21
|
+
type: 'binary',
|
|
22
|
+
},
|
|
23
|
+
{ name: 'python', packageName: 'python-is-python3', type: 'binary' },
|
|
24
|
+
{ name: 'setuptools', packageName: 'python3-setuptools', type: 'pylib' },
|
|
25
|
+
{ name: 'wget', packageName: 'wget', type: 'binary' },
|
|
26
|
+
];
|
|
27
|
+
const missingDependencies = await (0, packages_1.findMissingDependencies)(dependencies);
|
|
28
|
+
if (missingDependencies.length !== 0) {
|
|
29
|
+
await (0, packages_1.installPackages)(missingDependencies);
|
|
30
|
+
}
|
|
8
31
|
spinner.succeed();
|
|
9
32
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3AzMi9saW51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLGtDQThCQztBQWhDRCxvREFBZ0Y7QUFFekUsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsT0FBeUM7SUFFekMsTUFBTSxZQUFZLEdBQWlCO1FBQ2pDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDdkQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtRQUN6RCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ3ZELEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDN0QsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtRQUNyRCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ25ELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDdkQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtRQUM5RCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1FBQzlELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDN0QsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtRQUMxRDtZQUNFLElBQUksRUFBRSxtQkFBbUI7WUFDekIsV0FBVyxFQUFFLGdCQUFnQjtZQUM3QixJQUFJLEVBQUUsUUFBUTtTQUNmO1FBQ0QsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ3BFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtRQUN4RSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0tBQ3RELENBQUE7SUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSxrQ0FBdUIsRUFBQyxZQUFZLENBQUMsQ0FBQTtJQUN2RSxJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUEsMEJBQWUsRUFBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFDRCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDbkIsQ0FBQyJ9
|
|
@@ -19,7 +19,7 @@ async function default_1() {
|
|
|
19
19
|
const isWindows = OS === 'windows_nt';
|
|
20
20
|
const ESP_IDF_REPO = 'https://github.com/espressif/esp-idf.git';
|
|
21
21
|
const ESP_BRANCH_V4 = 'v4.4.3';
|
|
22
|
-
const ESP_BRANCH_V5 = 'v5.
|
|
22
|
+
const ESP_BRANCH_V5 = 'v5.4';
|
|
23
23
|
const ESP32_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_DIR, 'esp32');
|
|
24
24
|
const IDF_PATH = gluegun_1.filesystem.resolve(ESP32_DIR, 'esp-idf');
|
|
25
25
|
await (0, exec_1.sourceEnvironment)();
|
|
@@ -98,4 +98,4 @@ async function default_1() {
|
|
|
98
98
|
If there is trouble finding the correct port, pass the "--port" flag to the above command with the ${isWindows ? 'COM Port' : 'path to the /dev.cu.*'} that matches your device.
|
|
99
99
|
`);
|
|
100
100
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3AzMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVdBLDRCQXVHQztBQWxIRCxxQ0FBMkQ7QUFDM0QsMkJBQXlDO0FBQ3pDLDJDQUE0RDtBQUM1RCx5Q0FBK0Q7QUFDL0QsZ0VBQXVDO0FBQ3ZDLHFDQUEyRDtBQUMzRCx5Q0FBK0Q7QUFDL0QsNkNBQStEO0FBQy9ELHVDQUErRDtBQUMvRCx5Q0FBa0Q7QUFFbkMsS0FBSztJQUNsQixNQUFNLEVBQUUsR0FBRyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3ZDLE1BQU0sU0FBUyxHQUFHLEVBQUUsS0FBSyxZQUFZLENBQUE7SUFDckMsTUFBTSxZQUFZLEdBQUcsMENBQTBDLENBQUE7SUFDL0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFBO0lBQzlCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQTtJQUM1QixNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzFELE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUV6RCxNQUFNLElBQUEsd0JBQWlCLEdBQUUsQ0FBQTtJQUV6QixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBRXZDLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUNWLG9FQUFvRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsSUFBSSxTQUFTLEVBQUUs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
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.installDeps = installDeps;
|
|
4
|
-
const
|
|
4
|
+
const packages_1 = require("../../system/packages");
|
|
5
5
|
async function installDeps(spinner) {
|
|
6
6
|
spinner.start('Installing python deps with apt-get');
|
|
7
|
-
|
|
7
|
+
const dependencies = [
|
|
8
|
+
{ name: 'pip', packageName: 'python-pip', type: 'binary' },
|
|
9
|
+
{
|
|
10
|
+
name: 'pyserial-miniterm',
|
|
11
|
+
packageName: 'python3-serial',
|
|
12
|
+
type: 'binary',
|
|
13
|
+
},
|
|
14
|
+
{ name: 'python', packageName: 'python-is-python3', type: 'binary' },
|
|
15
|
+
];
|
|
16
|
+
const missingDependencies = await (0, packages_1.findMissingDependencies)(dependencies);
|
|
17
|
+
if (missingDependencies.length !== 0) {
|
|
18
|
+
await (0, packages_1.installPackages)(missingDependencies);
|
|
19
|
+
}
|
|
8
20
|
spinner.succeed();
|
|
9
21
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3A4MjY2L2xpbnV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsa0NBbUJDO0FBckJELG9EQUFnRjtBQUV6RSxLQUFLLFVBQVUsV0FBVyxDQUMvQixPQUF5QztJQUV6QyxPQUFPLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDcEQsTUFBTSxZQUFZLEdBQWlCO1FBQ2pDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDMUQ7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsSUFBSSxFQUFFLFFBQVE7U0FDZjtRQUNELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtLQUNyRSxDQUFBO0lBRUQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUEsa0NBQXVCLEVBQUMsWUFBWSxDQUFDLENBQUE7SUFDdkUsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFBLDBCQUFlLEVBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBQ25CLENBQUMifQ==
|
|
@@ -0,0 +1,126 @@
|
|
|
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
|
+
exports.default = default_1;
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const util_1 = require("util");
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const gluegun_1 = require("gluegun");
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
13
|
+
const exec_1 = require("../system/exec");
|
|
14
|
+
const packages_1 = require("../system/packages");
|
|
15
|
+
const moddable_1 = require("./moddable");
|
|
16
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
17
|
+
async function default_1({ sourceRepo, branch, release, interactive, }) {
|
|
18
|
+
gluegun_1.print.info('Setting up Linux tools!');
|
|
19
|
+
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
|
|
20
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
|
|
21
|
+
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
|
|
22
|
+
let buildTools = false;
|
|
23
|
+
const spinner = gluegun_1.print.spin();
|
|
24
|
+
spinner.start('Beginning setup...');
|
|
25
|
+
gluegun_1.filesystem.dir(constants_1.INSTALL_DIR);
|
|
26
|
+
// 0. check for the required build tools and libraries
|
|
27
|
+
const dependencies = [
|
|
28
|
+
{ name: 'bison', packageName: 'bison', type: 'binary' },
|
|
29
|
+
{ name: 'flex', packageName: 'flex', type: 'binary' },
|
|
30
|
+
{ name: 'gcc', packageName: 'gcc', type: 'binary' },
|
|
31
|
+
{ name: 'git', packageName: 'git', type: 'binary' },
|
|
32
|
+
{ name: 'gperf', packageName: 'gperf', type: 'binary' },
|
|
33
|
+
{ name: 'make', packageName: 'make', type: 'binary' },
|
|
34
|
+
{ name: 'wget', packageName: 'wget', type: 'binary' },
|
|
35
|
+
{ name: 'ncurses', packageName: 'libncurses-dev', type: 'library' },
|
|
36
|
+
{ name: 'gtk+-3.0', packageName: 'libgtk-3-dev', type: 'library' },
|
|
37
|
+
];
|
|
38
|
+
spinner.start('Checking for missing dependencies...');
|
|
39
|
+
const missingDependencies = await (0, packages_1.findMissingDependencies)(dependencies);
|
|
40
|
+
// 1. Install or update the packages required to compile:
|
|
41
|
+
spinner.start('Attempting to install dependencies...');
|
|
42
|
+
if (missingDependencies.length !== 0) {
|
|
43
|
+
await (0, packages_1.installPackages)(missingDependencies);
|
|
44
|
+
}
|
|
45
|
+
spinner.succeed();
|
|
46
|
+
// 3. Download the Moddable repository, or use the git command line tool as follows:
|
|
47
|
+
if (gluegun_1.filesystem.exists(constants_1.INSTALL_PATH) !== false) {
|
|
48
|
+
spinner.info('Moddable repo already installed');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (release !== undefined && (branch === undefined || branch === null)) {
|
|
52
|
+
spinner.start('Getting latest Moddable-OpenSource/moddable release');
|
|
53
|
+
const remoteRelease = await (0, moddable_1.fetchRelease)(release);
|
|
54
|
+
if (remoteRelease.assets.length === 0) {
|
|
55
|
+
spinner.stop();
|
|
56
|
+
gluegun_1.print.warning(`Moddable release ${release} does not have any pre-built assets.`);
|
|
57
|
+
buildTools =
|
|
58
|
+
!interactive ||
|
|
59
|
+
(await gluegun_1.prompt.confirm('Would you like to continue setting up and build the SDK locally?', true));
|
|
60
|
+
if (!buildTools) {
|
|
61
|
+
gluegun_1.print.info('Please select another release version with pre-built assets: https://github.com/Moddable-OpenSource/moddable/releases');
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
spinner.start();
|
|
65
|
+
}
|
|
66
|
+
await gluegun_1.system.spawn(`git clone ${sourceRepo} ${constants_1.INSTALL_PATH} --depth 1 --branch ${remoteRelease.tag_name} --single-branch`);
|
|
67
|
+
if (!buildTools) {
|
|
68
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
69
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
70
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
71
|
+
const assetName = isArm
|
|
72
|
+
? 'moddable-tools-lin64arm.zip'
|
|
73
|
+
: 'moddable-tools-lin64.zip';
|
|
74
|
+
spinner.info('Downloading release tools');
|
|
75
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
76
|
+
writePath: BIN_PATH,
|
|
77
|
+
assetName,
|
|
78
|
+
release: remoteRelease,
|
|
79
|
+
});
|
|
80
|
+
const tools = gluegun_1.filesystem.list(BIN_PATH) ?? [];
|
|
81
|
+
await Promise.all(tools.map(async (tool) => {
|
|
82
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
83
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
spinner.start(`Cloning ${sourceRepo} repo`);
|
|
89
|
+
await gluegun_1.system.spawn(`git clone ${sourceRepo} ${constants_1.INSTALL_PATH} --depth 1 --branch ${branch} --single-branch`);
|
|
90
|
+
buildTools = true;
|
|
91
|
+
}
|
|
92
|
+
spinner.succeed();
|
|
93
|
+
}
|
|
94
|
+
// 4. Setup the MODDABLE environment variable
|
|
95
|
+
process.env.MODDABLE = constants_1.INSTALL_PATH;
|
|
96
|
+
process.env.PATH = `${String(process.env.PATH)}:${BIN_PATH}`;
|
|
97
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `# Generated by xs-dev CLI`);
|
|
98
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
|
|
99
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
|
|
100
|
+
// 5. Build the Moddable command line tools, simulator, and debugger from the command line:
|
|
101
|
+
if (buildTools) {
|
|
102
|
+
spinner.start('Building platform tooling');
|
|
103
|
+
await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
|
|
104
|
+
spinner.succeed();
|
|
105
|
+
}
|
|
106
|
+
// 6. Install the desktop simulator and xsbug debugger applications
|
|
107
|
+
spinner.start('Installing simulator');
|
|
108
|
+
if (release !== undefined && (branch === undefined || branch === null)) {
|
|
109
|
+
gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
|
|
110
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
|
|
111
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
|
|
112
|
+
}
|
|
113
|
+
await (0, exec_1.execWithSudo)('make install', {
|
|
114
|
+
cwd: BUILD_DIR,
|
|
115
|
+
stdout: process.stdout,
|
|
116
|
+
});
|
|
117
|
+
spinner.succeed();
|
|
118
|
+
if (gluegun_1.system.which('npm') !== null) {
|
|
119
|
+
spinner.start('Installing xsbug-log dependencies');
|
|
120
|
+
await gluegun_1.system.exec('npm install', { cwd: constants_1.XSBUG_LOG_PATH });
|
|
121
|
+
spinner.succeed();
|
|
122
|
+
}
|
|
123
|
+
// 7. Profit?
|
|
124
|
+
gluegun_1.print.success('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBbUJBLDRCQThMQztBQWpORCw0Q0FBbUI7QUFDbkIsK0JBQWdDO0FBQ2hDLDJCQUEwQjtBQUMxQixxQ0FBMkQ7QUFDM0QsMkNBS29CO0FBQ3BCLGdFQUF1QztBQUN2Qyx5Q0FBNkM7QUFDN0MsaURBQTZFO0FBRzdFLHlDQUErRDtBQUUvRCxNQUFNLFlBQVksR0FBRyxJQUFBLGdCQUFTLEVBQUMsVUFBSyxDQUFDLENBQUE7QUFFdEIsS0FBSyxvQkFBVyxFQUM3QixVQUFVLEVBQ1YsTUFBTSxFQUNOLE9BQU8sRUFDUCxXQUFXLEdBQ087SUFDbEIsZUFBSyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBRXJDLE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNqQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsQ0FDVixDQUFBO0lBQ0QsTUFBTSxjQUFjLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ3ZDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxDQUNSLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBRUQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFFbkMsb0JBQVUsQ0FBQyxHQUFHLENBQUMsdUJBQVcsQ0FBQyxDQUFBO0lBRTNCLHNEQUFzRDtJQUN0RCxNQUFNLFlBQVksR0FBaUI7UUFDakMs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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.execWithSudo = execWithSudo;
|
|
4
|
+
exports.pkexec = pkexec;
|
|
4
5
|
exports.sourceEnvironment = sourceEnvironment;
|
|
5
6
|
exports.sourceIdf = sourceIdf;
|
|
6
7
|
exports.sourceIdfPythonEnv = sourceIdfPythonEnv;
|
|
@@ -34,6 +35,12 @@ async function execWithSudo(command, options = {}) {
|
|
|
34
35
|
}
|
|
35
36
|
await gluegun_1.system.exec(`sudo --askpass --preserve-env ${command}`, options);
|
|
36
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Use Policykit pkexec to run the command as an admin user
|
|
40
|
+
*/
|
|
41
|
+
async function pkexec(command, options = {}) {
|
|
42
|
+
await gluegun_1.system.exec(`pkexec ${command}`, options);
|
|
43
|
+
}
|
|
37
44
|
/**
|
|
38
45
|
* Utility for updating in-memory process.env after running a command
|
|
39
46
|
*/
|
|
@@ -76,4 +83,4 @@ async function sourceIdf() {
|
|
|
76
83
|
async function sourceIdfPythonEnv() {
|
|
77
84
|
await updateProcessEnv(`source ${process.env.IDF_PYTHON_ENV_PATH ?? ''}/bin/activate`);
|
|
78
85
|
}
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3N5c3RlbS9leGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLG9DQW1CQztBQUtELHdCQUtDO0FBaUNELDhDQUVDO0FBS0QsOEJBRUM7QUFLRCxnREFJQztBQWxHRCxxQ0FBOEM7QUFDOUMscUNBQXVDO0FBQ3ZDLGtEQUFzRDtBQUd0RCxTQUFTLGFBQWE7SUFDcEIsTUFBTSxZQUFZLEdBQUcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDaEQsSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4RCxlQUFLLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxDQUFDLENBQUE7UUFDNUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO0FBQ3pDLENBQUM7QUFFRDs7O0lBR0k7QUFDRyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxPQUFlLEVBQ2YsVUFBbUMsRUFBRTtJQUVyQyxJQUFJLENBQUM7UUFDSCxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUNmLHlDQUF5QyxPQUFPLEVBQUUsRUFDbEQsT0FBTyxDQUNSLENBQUE7UUFDRCxPQUFNO0lBQ1IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkQsYUFBYSxFQUFFLENBQUE7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEtBQWMsQ0FBQTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ3hFLENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxNQUFNLENBQzFCLE9BQWUsRUFDZixVQUFtQyxFQUFFO0lBRXJDLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsT0FBZTtJQUM3QyxNQUFNLEVBQUUsR0FBRyxJQUFBLGNBQVksR0FBRSxDQUFDLFdBQVcsRUFBWSxDQUFBO0lBRWpELElBQUksRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLFNBQVMsRUFBRTtnQkFDckQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSzthQUN6QixDQUFDLENBQUE7WUFDRixJQUNFLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxRQUFRO2dCQUNqQyxNQUFNLENBQUMsTUFBTSxZQUFZLE1BQU0sRUFDL0IsQ0FBQztnQkFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBYTtxQkFDakMsS0FBSyxDQUFDLElBQUksQ0FBQztxQkFDWCxHQUFHLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQTtnQkFDRCxJQUFJLE1BQU0sSUFBSSxRQUFRO29CQUFFLE9BQU8sQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFBO1lBQ2hELENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDdEQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCO0lBQ3JDLE1BQU0sZ0JBQWdCLENBQUMsVUFBVSw2QkFBaUIsRUFBRSxDQUFDLENBQUE7QUFDdkQsQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLFNBQVM7SUFDN0IsTUFBTSxnQkFBZ0IsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0FBQ25FLENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxrQkFBa0I7SUFDdEMsTUFBTSxnQkFBZ0IsQ0FDcEIsVUFBVSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsZUFBZSxDQUMvRCxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findMissingDependencies = findMissingDependencies;
|
|
4
|
+
exports.installPackages = installPackages;
|
|
5
|
+
const exec_1 = require("../system/exec");
|
|
6
|
+
const gluegun_1 = require("gluegun");
|
|
7
|
+
/**
|
|
8
|
+
* Check if the list of dependencies are installed on the system.
|
|
9
|
+
**/
|
|
10
|
+
async function findMissingDependencies(dependencies) {
|
|
11
|
+
const missingDependencies = [];
|
|
12
|
+
for (const dep of dependencies) {
|
|
13
|
+
if (dep.type === 'binary') {
|
|
14
|
+
if (gluegun_1.system.which(dep.name) === null) {
|
|
15
|
+
missingDependencies.push(dep);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (dep.type === 'library') {
|
|
19
|
+
try {
|
|
20
|
+
await gluegun_1.system.run(`pkg-config --exists ${dep.name}`);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
missingDependencies.push(dep);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (dep.type === 'pylib') {
|
|
27
|
+
try {
|
|
28
|
+
await gluegun_1.system.run(`pip3 show ${dep.name}`);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
missingDependencies.push(dep);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return missingDependencies;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Attempt to install packages on the linux platform.
|
|
39
|
+
**/
|
|
40
|
+
async function installPackages(packages) {
|
|
41
|
+
const packageManager = gluegun_1.system.which('apt');
|
|
42
|
+
if (packageManager !== null && packageManager !== undefined) {
|
|
43
|
+
await (0, exec_1.pkexec)(`${packageManager} install --yes ${packages.map((p) => p.packageName).join(' ')}`, { stdout: process.stdout });
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
gluegun_1.print.warning('xs-dev attempted to install dependencies, but does not yet support your package manager');
|
|
47
|
+
gluegun_1.print.warning(`Please install these dependencies before running this command again: ${packages.map((p) => p.packageName).join(', ')}`);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC9zeXN0ZW0vcGFja2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSwwREE0QkM7QUFLRCwwQ0FpQkM7QUF4REQseUNBQXVDO0FBQ3ZDLHFDQUF1QztBQUV2Qzs7SUFFSTtBQUNHLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsWUFBMEI7SUFFMUIsTUFBTSxtQkFBbUIsR0FBaUIsRUFBRSxDQUFBO0lBRTVDLEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFCLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNwQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0IsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDO2dCQUNILE1BQU0sZ0JBQU0sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3JELENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQzNDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLG1CQUFtQixDQUFBO0FBQzVCLENBQUM7QUFFRDs7SUFFSTtBQUNHLEtBQUssVUFBVSxlQUFlLENBQUMsUUFBc0I7SUFDMUQsTUFBTSxjQUFjLEdBQUcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFMUMsSUFBSSxjQUFjLEtBQUssSUFBSSxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1RCxNQUFNLElBQUEsYUFBTSxFQUNWLEdBQUcsY0FBYyxrQkFBa0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUNqRixFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQzNCLENBQUE7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLGVBQUssQ0FBQyxPQUFPLENBQ1gseUZBQXlGLENBQzFGLENBQUE7UUFDRCxlQUFLLENBQUMsT0FBTyxDQUNYLHdFQUF3RSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3hILENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC9zeXN0ZW0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -15,7 +15,7 @@ const exec_1 = require("../system/exec");
|
|
|
15
15
|
async function default_1() {
|
|
16
16
|
const OS = (0, os_1.type)().toLowerCase();
|
|
17
17
|
const ESP_BRANCH_V4 = 'v4.4.3';
|
|
18
|
-
const ESP_BRANCH_V5 = 'v5.
|
|
18
|
+
const ESP_BRANCH_V5 = 'v5.4';
|
|
19
19
|
const ESP32_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_DIR, 'esp32');
|
|
20
20
|
const IDF_PATH = gluegun_1.filesystem.resolve(ESP32_DIR, 'esp-idf');
|
|
21
21
|
await (0, exec_1.sourceEnvironment)();
|
|
@@ -98,4 +98,4 @@ async function default_1() {
|
|
|
98
98
|
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.
|
|
99
99
|
`);
|
|
100
100
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvZXNwMzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSw0QkE4SEM7QUF2SUQscUNBQXFFO0FBQ3JFLDJCQUF5QztBQUN6QyxrREFBbUU7QUFDbkUsZ0RBQXNFO0FBQ3RFLGdFQUF1QztBQUN2Qyw0Q0FBa0U7QUFDbEUsZ0RBQXNFO0FBQ3RFLHlDQUFrRDtBQUVuQyxLQUFLO0lBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDdkMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFBO0lBQzlCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQTtJQUM1QixNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzFELE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUV6RCxNQUFNLElBQUEsd0JBQWlCLEdBQUUsQ0FBQTtJQUV6QixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBRXhDLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUNWLG9FQUFvRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtJQUNoRCxJQUNFLG9CQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUs7UUFDdEMsb0JBQVUs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
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
exports.default = default_1;
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const util_1 = require("util");
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const gluegun_1 = require("gluegun");
|
|
11
|
+
const constants_1 = require("../setup/constants");
|
|
12
|
+
const moddable_1 = require("../setup/moddable");
|
|
13
|
+
const exec_1 = require("../system/exec");
|
|
14
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
15
|
+
async function default_1({ branch, release, interactive, }) {
|
|
16
|
+
await (0, exec_1.sourceEnvironment)();
|
|
17
|
+
// 0. ensure Moddable exists
|
|
18
|
+
if (!(0, moddable_1.moddableExists)()) {
|
|
19
|
+
gluegun_1.print.error('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
gluegun_1.print.info('Checking for SDK changes');
|
|
23
|
+
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
|
|
24
|
+
let rebuildTools = false;
|
|
25
|
+
if (release !== undefined && (branch === undefined || branch === null)) {
|
|
26
|
+
// get tag for current repo
|
|
27
|
+
const currentTag = await gluegun_1.system.exec('git tag', {
|
|
28
|
+
cwd: process.env.MODDABLE,
|
|
29
|
+
});
|
|
30
|
+
// get latest release tag
|
|
31
|
+
const remoteRelease = await (0, moddable_1.fetchRelease)(release);
|
|
32
|
+
if (currentTag.trim() === remoteRelease.tag_name) {
|
|
33
|
+
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
if (remoteRelease.assets.length === 0) {
|
|
37
|
+
gluegun_1.print.warning(`Moddable release ${release} does not have any pre-built assets.`);
|
|
38
|
+
rebuildTools =
|
|
39
|
+
!interactive ||
|
|
40
|
+
(await gluegun_1.prompt.confirm('Would you like to continue updating and build the SDK locally?', false));
|
|
41
|
+
if (!rebuildTools) {
|
|
42
|
+
gluegun_1.print.info('Please select another release version with pre-built assets: https://github.com/Moddable-OpenSource/moddable/releases');
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const spinner = gluegun_1.print.spin();
|
|
47
|
+
spinner.start('Updating Moddable SDK!');
|
|
48
|
+
gluegun_1.filesystem.remove(process.env.MODDABLE);
|
|
49
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${remoteRelease.tag_name} --single-branch`);
|
|
50
|
+
if (!rebuildTools) {
|
|
51
|
+
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
|
|
52
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
|
|
53
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
54
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
55
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
56
|
+
const assetName = isArm
|
|
57
|
+
? 'moddable-tools-lin64arm.zip'
|
|
58
|
+
: 'moddable-tools-lin64.zip';
|
|
59
|
+
spinner.info('Downloading release tools');
|
|
60
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
61
|
+
writePath: BIN_PATH,
|
|
62
|
+
assetName,
|
|
63
|
+
release: remoteRelease,
|
|
64
|
+
});
|
|
65
|
+
spinner.info('Updating tool permissions');
|
|
66
|
+
const tools = gluegun_1.filesystem.list(BIN_PATH) ?? [];
|
|
67
|
+
await Promise.all(tools.map(async (tool) => {
|
|
68
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
69
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
70
|
+
}));
|
|
71
|
+
spinner.info('Reinstalling simulator');
|
|
72
|
+
gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
|
|
73
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
|
|
74
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
|
|
75
|
+
await (0, exec_1.execWithSudo)('make install', {
|
|
76
|
+
cwd: BUILD_DIR,
|
|
77
|
+
stdout: process.stdout,
|
|
78
|
+
});
|
|
79
|
+
if (gluegun_1.system.which('npm') !== null) {
|
|
80
|
+
spinner.start('Installing xsbug-log dependencies');
|
|
81
|
+
await gluegun_1.system.exec('npm install', { cwd: constants_1.XSBUG_LOG_PATH });
|
|
82
|
+
spinner.succeed();
|
|
83
|
+
}
|
|
84
|
+
spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (typeof branch === 'string') {
|
|
88
|
+
const currentRev = await gluegun_1.system.exec(`git rev-parse ${branch}`, {
|
|
89
|
+
cwd: process.env.MODDABLE,
|
|
90
|
+
});
|
|
91
|
+
const remoteRev = await gluegun_1.system.exec(`git ls-remote origin refs/heads/${branch}`, { cwd: process.env.MODDABLE });
|
|
92
|
+
if (remoteRev.split('\t').shift() === currentRev.trim()) {
|
|
93
|
+
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
94
|
+
process.exit(0);
|
|
95
|
+
}
|
|
96
|
+
const spinner = gluegun_1.print.spin();
|
|
97
|
+
spinner.start('Updating Moddable SDK!');
|
|
98
|
+
spinner.info('Stashing any unsaved changes before committing');
|
|
99
|
+
await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
|
|
100
|
+
await gluegun_1.system.exec(`git pull origin ${branch}`, {
|
|
101
|
+
cwd: process.env.MODDABLE,
|
|
102
|
+
});
|
|
103
|
+
rebuildTools = true;
|
|
104
|
+
spinner.succeed();
|
|
105
|
+
}
|
|
106
|
+
if (rebuildTools) {
|
|
107
|
+
const spinner = gluegun_1.print.spin();
|
|
108
|
+
spinner.start('Rebuilding platform tools');
|
|
109
|
+
await gluegun_1.system.exec('rm -rf build/{tmp,bin}', { cwd: process.env.MODDABLE });
|
|
110
|
+
await gluegun_1.system.exec('make', {
|
|
111
|
+
cwd: BUILD_DIR,
|
|
112
|
+
stdout: process.stdout,
|
|
113
|
+
});
|
|
114
|
+
spinner.succeed();
|
|
115
|
+
spinner.start('Reinstalling simulator');
|
|
116
|
+
await (0, exec_1.execWithSudo)('make install', {
|
|
117
|
+
cwd: BUILD_DIR,
|
|
118
|
+
stdout: process.stdout,
|
|
119
|
+
});
|
|
120
|
+
spinner.succeed();
|
|
121
|
+
if (gluegun_1.system.which('npm') !== null) {
|
|
122
|
+
spinner.start('Installing xsbug-log dependencies');
|
|
123
|
+
await gluegun_1.system.exec('npm install', { cwd: constants_1.XSBUG_LOG_PATH });
|
|
124
|
+
spinner.succeed();
|
|
125
|
+
}
|
|
126
|
+
gluegun_1.print.success('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL2xpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLDRCQWdOQztBQS9ORCw0Q0FBbUI7QUFDbkIsK0JBQWdDO0FBQ2hDLDJCQUEwQjtBQUMxQixxQ0FBMkQ7QUFDM0Qsa0RBQWdGO0FBRWhGLGdEQUkwQjtBQUMxQix5Q0FBZ0U7QUFFaEUsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQkFBUyxFQUFDLFVBQUssQ0FBQyxDQUFBO0FBRXRCLEtBQUssb0JBQVcsRUFDN0IsTUFBTSxFQUNOLE9BQU8sRUFDUCxXQUFXLEdBQ0Q7SUFDVixNQUFNLElBQUEsd0JBQWlCLEdBQUUsQ0FBQTtJQUV6Qiw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFLENBQUM7UUFDdEIsZUFBSyxDQUFDLEtBQUssQ0FDVCxvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVELGVBQUssQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUV0QyxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBQ0QsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBRXhCLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkUsMkJBQTJCO1FBQzNCLE1BQU0sVUFBVSxHQUFXLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3RELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFBO1FBQ0YseUJBQXlC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
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* first attempting as non-interactive before falling back to ssh-askpass prompt
|
|
4
4
|
**/
|
|
5
5
|
export declare function execWithSudo(command: string, options?: Record<string, unknown>): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Use Policykit pkexec to run the command as an admin user
|
|
8
|
+
*/
|
|
9
|
+
export declare function pkexec(command: string, options?: Record<string, unknown>): Promise<void>;
|
|
6
10
|
/**
|
|
7
11
|
* Set updated env from user shell as process.env
|
|
8
12
|
*/
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Dependency } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Check if the list of dependencies are installed on the system.
|
|
4
|
+
**/
|
|
5
|
+
export declare function findMissingDependencies(dependencies: Dependency[]): Promise<Dependency[]>;
|
|
6
|
+
/**
|
|
7
|
+
* Attempt to install packages on the linux platform.
|
|
8
|
+
**/
|
|
9
|
+
export declare function installPackages(packages: Dependency[]): Promise<void>;
|
|
@@ -15,12 +15,12 @@ This should output something like this:
|
|
|
15
15
|
|
|
16
16
|
```
|
|
17
17
|
xs-dev environment info:
|
|
18
|
-
CLI Version 0.
|
|
18
|
+
CLI Version 0.36.5
|
|
19
19
|
OS Darwin
|
|
20
20
|
Arch arm64
|
|
21
|
-
NodeJS Version
|
|
22
|
-
Python Version 3.
|
|
23
|
-
Moddable SDK Version 3.
|
|
21
|
+
NodeJS Version v22.10.0 (/path/to/node)
|
|
22
|
+
Python Version 3.12.8 (/path/to/python)
|
|
23
|
+
Moddable SDK Version 5.3.3 (/path/to/moddable)
|
|
24
24
|
Supported target devices mac, esp32, esp8266, pico
|
|
25
25
|
ESP32 IDF Directory /path/to/esp32/esp-idf
|
|
26
26
|
ESP8266 Base Directory /path/to/esp
|
|
@@ -34,9 +34,9 @@ These are not the only available editors, so feel free to do your own research a
|
|
|
34
34
|
|
|
35
35
|
## NodeJS & Package Manager (optional)
|
|
36
36
|
|
|
37
|
-
While [NodeJS](https://nodejs.org/en/) is not required for [Moddable XS](https://github.com/Moddable-OpenSource/moddable) projects, it is a dependency for installing and using the [`xs-dev` CLI](https://xs-dev.js.org/).
|
|
37
|
+
While [NodeJS](https://nodejs.org/en/) is not required for [Moddable XS](https://github.com/Moddable-OpenSource/moddable) projects, it is a dependency for installing and using the [`xs-dev` CLI](https://xs-dev.js.org/). It supports at least the [active Long Term Support (LTS) version](https://nodejs.org/en/about/previous-releases#nodejs-releases).
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
NodeJS can be [downloaded directly from the website](https://nodejs.org/en/download/), however using one of the following version managers can help with quickly switching to recommended versions of the tooling in the future:
|
|
40
40
|
|
|
41
41
|
- [mise](https://mise.jdx.dev/getting-started.html#_1-install-mise-cli)
|
|
42
42
|
- [`pnpm env`](https://pnpm.io/cli/env)
|
|
@@ -44,7 +44,7 @@ Node can be [downloaded directly from the website](https://nodejs.org/en/downloa
|
|
|
44
44
|
- [fnm](https://github.com/Schniz/fnm)
|
|
45
45
|
- [asdf](https://asdf-vm.com/guide/getting-started.html#_4-install-a-plugin)
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
NodeJS comes with [npm](https://docs.npmjs.com/cli/v8/commands/npm) as the included package manager, but there are other options available if needed:
|
|
48
48
|
|
|
49
49
|
- [pnpm](https://pnpm.io/installation)
|
|
50
50
|
- [yarn](https://yarnpkg.com/)
|
|
@@ -72,6 +72,7 @@ Simulators are fun and everything, but controlling hardware with JavaScript is e
|
|
|
72
72
|
- [ESP8266](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/esp8266.md)
|
|
73
73
|
- [ESP32](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/esp32.md)
|
|
74
74
|
- [Raspberry Pi Pico](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/pico.md)
|
|
75
|
+
- [Nordic nRF52840](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/devices/nrf52.md)
|
|
75
76
|
|
|
76
77
|
Each platform has a variety of features and form factors to support whatever you might dream up. This guide will do its best to provide code and diagrams that match the expectations of your chosen device(s) but cannot promise comprehensive coverage of every piece of hardware in existence.
|
|
77
78
|
|
|
@@ -96,12 +96,12 @@ Running [`xs-dev doctor` command](/features/doctor) will display relevant info a
|
|
|
96
96
|
|
|
97
97
|
```
|
|
98
98
|
xs-dev environment info:
|
|
99
|
-
CLI Version 0.
|
|
99
|
+
CLI Version 0.36.5
|
|
100
100
|
OS Darwin
|
|
101
101
|
Arch arm64
|
|
102
|
-
NodeJS Version
|
|
103
|
-
Python Version 3.
|
|
104
|
-
Moddable SDK Version 3.
|
|
102
|
+
NodeJS Version v22.10.0 (/path/to/node)
|
|
103
|
+
Python Version 3.12.8 (/path/to/python)
|
|
104
|
+
Moddable SDK Version 5.3.3 (/path/to/moddable)
|
|
105
105
|
Supported target devices mac
|
|
106
106
|
|
|
107
107
|
If this is related to an error when using the CLI, please create an issue at "https://github.com/hipsterbrown/xs-dev/issues/new" with the above info.
|
package/package.json
CHANGED
|
@@ -1,116 +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
|
-
exports.default = default_1;
|
|
7
|
-
const os_1 = __importDefault(require("os"));
|
|
8
|
-
const util_1 = require("util");
|
|
9
|
-
const fs_1 = require("fs");
|
|
10
|
-
const gluegun_1 = require("gluegun");
|
|
11
|
-
const constants_1 = require("./constants");
|
|
12
|
-
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
13
|
-
const exec_1 = require("../system/exec");
|
|
14
|
-
const moddable_1 = require("./moddable");
|
|
15
|
-
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
16
|
-
async function default_1({ sourceRepo, branch, release, interactive, }) {
|
|
17
|
-
gluegun_1.print.info('Setting up Linux tools!');
|
|
18
|
-
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
|
|
19
|
-
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
|
|
20
|
-
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
|
|
21
|
-
let buildTools = false;
|
|
22
|
-
const spinner = gluegun_1.print.spin();
|
|
23
|
-
spinner.start('Beginning setup...');
|
|
24
|
-
// 0. clone moddable repo into ./local/share directory if it does not exist yet
|
|
25
|
-
gluegun_1.filesystem.dir(constants_1.INSTALL_DIR);
|
|
26
|
-
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `# Generated by xs-dev CLI`);
|
|
27
|
-
// 1. Install or update the packages required to compile:
|
|
28
|
-
spinner.start('Installing dependencies...');
|
|
29
|
-
await (0, exec_1.execWithSudo)('apt-get install --yes gcc git wget make libncurses-dev flex bison gperf', { stdout: process.stdout });
|
|
30
|
-
spinner.succeed();
|
|
31
|
-
// 2. Install the development version of the GTK+ 3 library
|
|
32
|
-
spinner.start('Installing GTK+ 3...');
|
|
33
|
-
await (0, exec_1.execWithSudo)('apt-get --yes install libgtk-3-dev', {
|
|
34
|
-
stdout: process.stdout,
|
|
35
|
-
});
|
|
36
|
-
spinner.succeed();
|
|
37
|
-
// 3. Download the Moddable repository, or use the git command line tool as follows:
|
|
38
|
-
if (gluegun_1.filesystem.exists(constants_1.INSTALL_PATH) !== false) {
|
|
39
|
-
spinner.info('Moddable repo already installed');
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
if (release !== undefined && (branch === undefined || branch === null)) {
|
|
43
|
-
spinner.start('Getting latest Moddable-OpenSource/moddable release');
|
|
44
|
-
const remoteRelease = await (0, moddable_1.fetchRelease)(release);
|
|
45
|
-
if (remoteRelease.assets.length === 0) {
|
|
46
|
-
spinner.stop();
|
|
47
|
-
gluegun_1.print.warning(`Moddable release ${release} does not have any pre-built assets.`);
|
|
48
|
-
buildTools =
|
|
49
|
-
!interactive ||
|
|
50
|
-
(await gluegun_1.prompt.confirm('Would you like to continue setting up and build the SDK locally?', true));
|
|
51
|
-
if (!buildTools) {
|
|
52
|
-
gluegun_1.print.info('Please select another release version with pre-built assets: https://github.com/Moddable-OpenSource/moddable/releases');
|
|
53
|
-
process.exit(0);
|
|
54
|
-
}
|
|
55
|
-
spinner.start();
|
|
56
|
-
}
|
|
57
|
-
await gluegun_1.system.spawn(`git clone ${sourceRepo} ${constants_1.INSTALL_PATH} --depth 1 --branch ${remoteRelease.tag_name} --single-branch`);
|
|
58
|
-
if (!buildTools) {
|
|
59
|
-
gluegun_1.filesystem.dir(BIN_PATH);
|
|
60
|
-
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
61
|
-
const isArm = os_1.default.arch() === 'arm64';
|
|
62
|
-
const assetName = isArm
|
|
63
|
-
? 'moddable-tools-lin64arm.zip'
|
|
64
|
-
: 'moddable-tools-lin64.zip';
|
|
65
|
-
spinner.info('Downloading release tools');
|
|
66
|
-
await (0, moddable_1.downloadReleaseTools)({
|
|
67
|
-
writePath: BIN_PATH,
|
|
68
|
-
assetName,
|
|
69
|
-
release: remoteRelease,
|
|
70
|
-
});
|
|
71
|
-
const tools = gluegun_1.filesystem.list(BIN_PATH) ?? [];
|
|
72
|
-
await Promise.all(tools.map(async (tool) => {
|
|
73
|
-
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
74
|
-
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
spinner.start(`Cloning ${sourceRepo} repo`);
|
|
80
|
-
await gluegun_1.system.spawn(`git clone ${sourceRepo} ${constants_1.INSTALL_PATH} --depth 1 --branch ${branch} --single-branch`);
|
|
81
|
-
buildTools = true;
|
|
82
|
-
}
|
|
83
|
-
spinner.succeed();
|
|
84
|
-
}
|
|
85
|
-
// 4. Setup the MODDABLE environment variable
|
|
86
|
-
process.env.MODDABLE = constants_1.INSTALL_PATH;
|
|
87
|
-
process.env.PATH = `${String(process.env.PATH)}:${BIN_PATH}`;
|
|
88
|
-
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
|
|
89
|
-
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
|
|
90
|
-
// 5. Build the Moddable command line tools, simulator, and debugger from the command line:
|
|
91
|
-
if (buildTools) {
|
|
92
|
-
spinner.start('Building platform tooling');
|
|
93
|
-
await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
|
|
94
|
-
spinner.succeed();
|
|
95
|
-
}
|
|
96
|
-
// 6. Install the desktop simulator and xsbug debugger applications
|
|
97
|
-
spinner.start('Installing simulator');
|
|
98
|
-
if (release !== undefined && (branch === undefined || branch === null)) {
|
|
99
|
-
gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
|
|
100
|
-
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
|
|
101
|
-
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
|
|
102
|
-
}
|
|
103
|
-
await (0, exec_1.execWithSudo)('make install', {
|
|
104
|
-
cwd: BUILD_DIR,
|
|
105
|
-
stdout: process.stdout,
|
|
106
|
-
});
|
|
107
|
-
spinner.succeed();
|
|
108
|
-
if (gluegun_1.system.which('npm') !== null) {
|
|
109
|
-
spinner.start('Installing xsbug-log dependencies');
|
|
110
|
-
await gluegun_1.system.exec('npm install', { cwd: constants_1.XSBUG_LOG_PATH });
|
|
111
|
-
spinner.succeed();
|
|
112
|
-
}
|
|
113
|
-
// 7. Profit?
|
|
114
|
-
gluegun_1.print.success('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9saW51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWlCQSw0QkF3TEM7QUF6TUQsNENBQW1CO0FBQ25CLCtCQUFnQztBQUNoQywyQkFBMEI7QUFDMUIscUNBQTJEO0FBQzNELDJDQUtvQjtBQUNwQixnRUFBdUM7QUFDdkMseUNBQTZDO0FBRTdDLHlDQUErRDtBQUUvRCxNQUFNLFlBQVksR0FBRyxJQUFBLGdCQUFTLEVBQUMsVUFBSyxDQUFDLENBQUE7QUFFdEIsS0FBSyxvQkFBVyxFQUM3QixVQUFVLEVBQ1YsTUFBTSxFQUNOLE9BQU8sRUFDUCxXQUFXLEdBQ087SUFDbEIsZUFBSyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBRXJDLE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNqQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsQ0FDVixDQUFBO0lBQ0QsTUFBTSxjQUFjLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ3ZDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxDQUNSLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBRUQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFFbkMsK0VBQStFO0lBQy9FLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtJQUUzQixNQUFNLElBQUEsZ0JBQU0sRUFBQyw2QkFBaUIsRUFB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
|
|
@@ -1,129 +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
|
-
exports.default = default_1;
|
|
7
|
-
const os_1 = __importDefault(require("os"));
|
|
8
|
-
const util_1 = require("util");
|
|
9
|
-
const fs_1 = require("fs");
|
|
10
|
-
const gluegun_1 = require("gluegun");
|
|
11
|
-
const constants_1 = require("../setup/constants");
|
|
12
|
-
const moddable_1 = require("../setup/moddable");
|
|
13
|
-
const exec_1 = require("../system/exec");
|
|
14
|
-
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
15
|
-
async function default_1({ branch, release, interactive, }) {
|
|
16
|
-
await (0, exec_1.sourceEnvironment)();
|
|
17
|
-
// 0. ensure Moddable exists
|
|
18
|
-
if (!(0, moddable_1.moddableExists)()) {
|
|
19
|
-
gluegun_1.print.error('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
gluegun_1.print.info('Checking for SDK changes');
|
|
23
|
-
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
|
|
24
|
-
let rebuildTools = false;
|
|
25
|
-
if (release !== undefined && (branch === undefined || branch === null)) {
|
|
26
|
-
// get tag for current repo
|
|
27
|
-
const currentTag = await gluegun_1.system.exec('git tag', {
|
|
28
|
-
cwd: process.env.MODDABLE,
|
|
29
|
-
});
|
|
30
|
-
// get latest release tag
|
|
31
|
-
const remoteRelease = await (0, moddable_1.fetchRelease)(release);
|
|
32
|
-
if (currentTag.trim() === remoteRelease.tag_name) {
|
|
33
|
-
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
34
|
-
process.exit(0);
|
|
35
|
-
}
|
|
36
|
-
if (remoteRelease.assets.length === 0) {
|
|
37
|
-
gluegun_1.print.warning(`Moddable release ${release} does not have any pre-built assets.`);
|
|
38
|
-
rebuildTools =
|
|
39
|
-
!interactive ||
|
|
40
|
-
(await gluegun_1.prompt.confirm('Would you like to continue updating and build the SDK locally?', false));
|
|
41
|
-
if (!rebuildTools) {
|
|
42
|
-
gluegun_1.print.info('Please select another release version with pre-built assets: https://github.com/Moddable-OpenSource/moddable/releases');
|
|
43
|
-
process.exit(0);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const spinner = gluegun_1.print.spin();
|
|
47
|
-
spinner.start('Updating Moddable SDK!');
|
|
48
|
-
gluegun_1.filesystem.remove(process.env.MODDABLE);
|
|
49
|
-
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${remoteRelease.tag_name} --single-branch`);
|
|
50
|
-
if (!rebuildTools) {
|
|
51
|
-
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
|
|
52
|
-
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
|
|
53
|
-
gluegun_1.filesystem.dir(BIN_PATH);
|
|
54
|
-
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
55
|
-
const isArm = os_1.default.arch() === 'arm64';
|
|
56
|
-
const assetName = isArm
|
|
57
|
-
? 'moddable-tools-lin64arm.zip'
|
|
58
|
-
: 'moddable-tools-lin64.zip';
|
|
59
|
-
spinner.info('Downloading release tools');
|
|
60
|
-
await (0, moddable_1.downloadReleaseTools)({
|
|
61
|
-
writePath: BIN_PATH,
|
|
62
|
-
assetName,
|
|
63
|
-
release: remoteRelease,
|
|
64
|
-
});
|
|
65
|
-
spinner.info('Updating tool permissions');
|
|
66
|
-
const tools = gluegun_1.filesystem.list(BIN_PATH) ?? [];
|
|
67
|
-
await Promise.all(tools.map(async (tool) => {
|
|
68
|
-
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
69
|
-
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
70
|
-
}));
|
|
71
|
-
spinner.info('Reinstalling simulator');
|
|
72
|
-
gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
|
|
73
|
-
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
|
|
74
|
-
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
|
|
75
|
-
await (0, exec_1.execWithSudo)('make install', {
|
|
76
|
-
cwd: BUILD_DIR,
|
|
77
|
-
stdout: process.stdout,
|
|
78
|
-
});
|
|
79
|
-
if (gluegun_1.system.which('npm') !== null) {
|
|
80
|
-
spinner.start('Installing xsbug-log dependencies');
|
|
81
|
-
await gluegun_1.system.exec('npm install', { cwd: constants_1.XSBUG_LOG_PATH });
|
|
82
|
-
spinner.succeed();
|
|
83
|
-
}
|
|
84
|
-
spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (typeof branch === 'string') {
|
|
88
|
-
const currentRev = await gluegun_1.system.exec(`git rev-parse ${branch}`, {
|
|
89
|
-
cwd: process.env.MODDABLE,
|
|
90
|
-
});
|
|
91
|
-
const remoteRev = await gluegun_1.system.exec(`git ls-remote origin refs/heads/${branch}`, { cwd: process.env.MODDABLE });
|
|
92
|
-
if (remoteRev.split('\t').shift() === currentRev.trim()) {
|
|
93
|
-
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
94
|
-
process.exit(0);
|
|
95
|
-
}
|
|
96
|
-
const spinner = gluegun_1.print.spin();
|
|
97
|
-
spinner.start('Updating Moddable SDK!');
|
|
98
|
-
spinner.info('Stashing any unsaved changes before committing');
|
|
99
|
-
await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
|
|
100
|
-
await gluegun_1.system.exec(`git pull origin ${branch}`, {
|
|
101
|
-
cwd: process.env.MODDABLE,
|
|
102
|
-
});
|
|
103
|
-
rebuildTools = true;
|
|
104
|
-
spinner.succeed();
|
|
105
|
-
}
|
|
106
|
-
if (rebuildTools) {
|
|
107
|
-
const spinner = gluegun_1.print.spin();
|
|
108
|
-
spinner.start('Rebuilding platform tools');
|
|
109
|
-
await gluegun_1.system.exec('rm -rf build/{tmp,bin}', { cwd: process.env.MODDABLE });
|
|
110
|
-
await gluegun_1.system.exec('make', {
|
|
111
|
-
cwd: BUILD_DIR,
|
|
112
|
-
stdout: process.stdout,
|
|
113
|
-
});
|
|
114
|
-
spinner.succeed();
|
|
115
|
-
spinner.start('Reinstalling simulator');
|
|
116
|
-
await (0, exec_1.execWithSudo)('make install', {
|
|
117
|
-
cwd: BUILD_DIR,
|
|
118
|
-
stdout: process.stdout,
|
|
119
|
-
});
|
|
120
|
-
spinner.succeed();
|
|
121
|
-
if (gluegun_1.system.which('npm') !== null) {
|
|
122
|
-
spinner.start('Installing xsbug-log dependencies');
|
|
123
|
-
await gluegun_1.system.exec('npm install', { cwd: constants_1.XSBUG_LOG_PATH });
|
|
124
|
-
spinner.succeed();
|
|
125
|
-
}
|
|
126
|
-
gluegun_1.print.success('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvbGludXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSw0QkFnTkM7QUEvTkQsNENBQW1CO0FBQ25CLCtCQUFnQztBQUNoQywyQkFBMEI7QUFDMUIscUNBQTJEO0FBQzNELGtEQUFnRjtBQUVoRixnREFJMEI7QUFDMUIseUNBQWdFO0FBRWhFLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQzdCLE1BQU0sRUFDTixPQUFPLEVBQ1AsV0FBVyxHQUNEO0lBQ1YsTUFBTSxJQUFBLHdCQUFpQixHQUFFLENBQUE7SUFFekIsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRSxDQUFDO1FBQ3RCLGVBQUssQ0FBQyxLQUFLLENBQ1Qsb0VBQW9FLENBQ3JFLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxlQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFFdEMsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2xDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ04sQ0FBQTtJQUNELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUV4QixJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQTtRQUNGLHlC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
|
|
File without changes
|
|
File without changes
|