xs-dev 0.37.0 → 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/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/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/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/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/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
|
|
@@ -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
|
|
@@ -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>;
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvbGludXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSw0QkFnTkM7QUEvTkQsNENBQW1CO0FBQ25CLCtCQUFnQztBQUNoQywyQkFBMEI7QUFDMUIscUNBQTJEO0FBQzNELGtEQUFnRjtBQUVoRixnREFJMEI7QUFDMUIseUNBQWdFO0FBRWhFLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQzdCLE1BQU0sRUFDTixPQUFPLEVBQ1AsV0FBVyxHQUNEO0lBQ1YsTUFBTSxJQUFBLHdCQUFpQixHQUFFLENBQUE7SUFFekIsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRSxDQUFDO1FBQ3RCLGVBQUssQ0FBQyxLQUFLLENBQ1Qsb0VBQW9FLENBQ3JFLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxlQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFFdEMsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2xDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ04sQ0FBQTtJQUNELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUV4QixJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQTtRQUNGLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsdUJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQTtRQUVqRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakQsZUFBSyxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO1lBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakIsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsZUFBSyxDQUFDLE9BQU8sQ0FDWCxvQkFBb0IsT0FBTyxzQ0FBc0MsQ0FDbEUsQ0FBQTtZQUNELFlBQVk7Z0JBQ1YsQ0FBQyxXQUFXO29CQUNaLENBQUMsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FDbkIsZ0VBQWdFLEVBQ2hFLEtBQUssQ0FDTixDQUFDLENBQUE7WUFFSixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2xCLGVBQUssQ0FBQyxJQUFJLENBQ1IsdUhBQXVILENBQ3hILENBQUE7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNqQixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFFdkMsb0JBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQixhQUFhLHlCQUFhLElBQUksd0JBQVksdUJBQXVCLGFBQWEsQ0FBQyxRQUFRLGtCQUFrQixDQUMxRyxDQUFBO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNqQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsQ0FDVixDQUFBO1lBQ0QsTUFBTSxjQUFjLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ3ZDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxDQUNSLENBQUE7WUFFRCxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN4QixvQkFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUU5QixNQUFNLEtBQUssR0FBRyxZQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssT0FBTyxDQUFBO1lBQ25DLE1BQU0sU0FBUyxHQUFHLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyw2QkFBNkI7Z0JBQy9CLENBQUMsQ0FBQywwQkFBMEIsQ0FBQTtZQUU5QixPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7WUFDekMsTUFBTSxJQUFBLCtCQUFvQixFQUFDO2dCQUN6QixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsU0FBUztnQkFDVCxPQUFPLEVBQUUsYUFBYTthQUN2QixDQUFDLENBQUE7WUFFRixPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7WUFDekMsTUFBTSxLQUFLLEdBQUcsb0JBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzdDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxZQUFZLENBQUMsb0JBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUM3RCxNQUFNLG9CQUFVLENBQUMsU0FBUyxDQUN4QixvQkFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQ2xDLG9CQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FDekMsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7WUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7WUFDdEMsb0JBQVUsQ0FBQyxHQUFHLENBQ1osb0JBQVUsQ0FBQyxPQUFPLENBQ2hCLFNBQVMsRUFDVCxJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxFQUNQLFdBQVcsQ0FDWixDQUNGLENBQUE7WUFDRCxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUNmLHdCQUF3QixvQkFBVSxDQUFDLE9BQU8sQ0FDeEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsT0FBTyxFQUNQLGVBQWUsQ0FDaEIsRUFBRSxFQUNILEVBQUUsT0FBTyxFQUFFLENBQ1osQ0FBQTtZQUNELE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQ2Ysd0JBQXdCLG9CQUFVLENBQUMsT0FBTyxDQUN4Qyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxPQUFPLEVBQ1AsZUFBZSxDQUNoQixFQUFFLEVBQ0gsRUFBRSxPQUFPLEVBQUUsQ0FDWixDQUFBO1lBQ0QsTUFBTSxJQUFBLG1CQUFZLEVBQUMsY0FBYyxFQUFFO2dCQUNqQyxHQUFHLEVBQUUsU0FBUztnQkFDZCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07YUFDdkIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO2dCQUNsRCxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSwwQkFBYyxFQUFFLENBQUMsQ0FBQTtnQkFDekQsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ25CLENBQUM7WUFDRCxPQUFPLENBQUMsT0FBTyxDQUNiLDBIQUEwSCxDQUMzSCxDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFXLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLE1BQU0sRUFBRSxFQUFFO1lBQ3RFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxTQUFTLEdBQVcsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FDekMsbUNBQW1DLE1BQU0sRUFBRSxFQUMzQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUM5QixDQUFBO1FBRUQsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pCLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBRXZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQTtRQUM5RCxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDN0QsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsTUFBTSxFQUFFLEVBQUU7WUFDN0MsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtTQUMxQixDQUFDLENBQUE7UUFDRixZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ25CLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBRUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO1FBRTFDLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBRTFFLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3hCLEdBQUcsRUFBRSxTQUFTO1lBQ2QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1NBQ3ZCLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVqQixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDdkMsTUFBTSxJQUFBLG1CQUFZLEVBQUMsY0FBYyxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxTQUFTO1lBQ2QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1NBQ3ZCLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVqQixJQUFJLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtZQUNsRCxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSwwQkFBYyxFQUFFLENBQUMsQ0FBQTtZQUN6RCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDbkIsQ0FBQztRQUVELGVBQUssQ0FBQyxPQUFPLENBQ1gsMEhBQTBILENBQzNILENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
File without changes
|
|
File without changes
|