@expo/cli
Version:
78 lines (77 loc) • 2.74 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
promptForDeviceAsync: ()=>promptForDeviceAsync,
formatDeviceChoice: ()=>formatDeviceChoice
});
function _chalk() {
const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
_chalk = function() {
return data;
};
return data;
}
const _adb = require("./adb");
const _errors = require("../../../utils/errors");
const _prompts = require("../../../utils/prompts");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
async function promptForDeviceAsync(devices) {
// TODO: provide an option to add or download more simulators
const { value } = await (0, _prompts.promptAsync)({
type: "autocomplete",
name: "value",
limit: 11,
message: "Select a device/emulator",
choices: devices.map((item)=>formatDeviceChoice(item)),
suggest: (0, _prompts.createSelectionFilter)()
});
const device = devices.find(({ name })=>name === value);
if ((device == null ? void 0 : device.isAuthorized) === false) {
(0, _adb.logUnauthorized)(device);
throw new _errors.AbortCommandError();
}
return device;
}
function formatDeviceChoice(device) {
const symbol = getDeviceChoiceSymbol(device);
const name = getDeviceChoiceName(device);
const type = _chalk().default.dim(device.isAuthorized ? device.type : "unauthorized");
return {
value: device.name,
title: `${symbol}${name} (${type})`
};
}
/** Get the styled symbol of the device, based on ADB connection type (usb vs network) */ function getDeviceChoiceSymbol(device) {
if (device.type === "device" && device.connectionType === "Network") {
return "\uD83C\uDF10 ";
}
if (device.type === "device") {
return "\uD83D\uDD0C ";
}
return "";
}
/** Get the styled name of the device, based on device state */ function getDeviceChoiceName(device) {
// Use no style changes for a disconnected device that is available to be opened.
if (!device.isBooted) {
return device.name;
}
// A device that is connected and ready to be used should be bolded to match iOS.
if (device.isAuthorized) {
return _chalk().default.bold(device.name);
}
// Devices that are unauthorized and connected cannot be used, but they are connected so gray them out.
return _chalk().default.bold(_chalk().default.gray(device.name));
}
//# sourceMappingURL=promptAndroidDevice.js.map
;