UNPKG

@expo/cli

Version:
78 lines (77 loc) 2.74 kB
"use strict"; 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