53 lines
2 KiB
JavaScript
53 lines
2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getPlatformTargets = exports.runNativeRun = void 0;
|
|
const tslib_1 = require("tslib");
|
|
const path_1 = require("path");
|
|
const colors_1 = tslib_1.__importDefault(require("../colors"));
|
|
const errors_1 = require("../errors");
|
|
const node_1 = require("./node");
|
|
const subprocess_1 = require("./subprocess");
|
|
async function runNativeRun(args, options = {}) {
|
|
const p = (0, node_1.resolveNode)(__dirname, (0, path_1.dirname)('native-run/package'), 'bin/native-run');
|
|
if (!p) {
|
|
(0, errors_1.fatal)(`${colors_1.default.input('native-run')} not found.`);
|
|
}
|
|
return await (0, subprocess_1.runCommand)(p, args, options);
|
|
}
|
|
exports.runNativeRun = runNativeRun;
|
|
async function getPlatformTargets(platformName) {
|
|
const errors = [];
|
|
try {
|
|
const output = await runNativeRun([platformName, '--list', '--json']);
|
|
const parsedOutput = JSON.parse(output);
|
|
if (parsedOutput.devices.length || parsedOutput.virtualDevices.length) {
|
|
return [
|
|
...parsedOutput.devices.map((t) => ({ ...t, virtual: false })),
|
|
...parsedOutput.virtualDevices.map((t) => ({
|
|
...t,
|
|
virtual: true,
|
|
})),
|
|
];
|
|
}
|
|
else {
|
|
parsedOutput.errors.map((e) => {
|
|
errors.push(e);
|
|
});
|
|
}
|
|
}
|
|
catch (e) {
|
|
const err = JSON.parse(e);
|
|
errors.push(err);
|
|
}
|
|
const plural = errors.length > 1 ? 's' : '';
|
|
const errMsg = `${colors_1.default.strong('native-run')} failed with error${plural}\n
|
|
${errors
|
|
.map((e) => {
|
|
return `\t${colors_1.default.strong(e.code)}: ${e.error}`;
|
|
})
|
|
.join('\n')}
|
|
\n\tMore details for this error${plural} may be available online: ${colors_1.default.strong('https://github.com/ionic-team/native-run/wiki/Android-Errors')}
|
|
`;
|
|
throw errMsg;
|
|
}
|
|
exports.getPlatformTargets = getPlatformTargets;
|