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