1import { AndroidDeviceManager } from '../../start/platforms/android/AndroidDeviceManager';
2import { logDeviceArgument } from '../hints';
3
4const debug = require('debug')('expo:android:resolveDevice');
5
6/** Given a `device` argument from the CLI, parse and prompt our way to a usable device for building. */
7export async function resolveDeviceAsync(device?: string | boolean) {
8  if (!device) {
9    const manager = await AndroidDeviceManager.resolveAsync();
10    debug(`Resolved default device (name: ${manager.device.name}, pid: ${manager.device.pid})`);
11    return manager;
12  }
13
14  debug(`Resolving device from argument: ${device}`);
15  const manager =
16    device === true
17      ? // `--device` (no props after)
18        await AndroidDeviceManager.resolveAsync({ shouldPrompt: true })
19      : // `--device <name>`
20        await AndroidDeviceManager.resolveFromNameAsync(device);
21  logDeviceArgument(manager.device.name);
22  return manager;
23}
24