13d6e487dSEvan Baconimport { resolveDeviceAsync } from './resolveDevice';
23d6e487dSEvan Baconimport { GradleProps, resolveGradleProps } from './resolveGradleProps';
33d6e487dSEvan Baconimport { LaunchProps, resolveLaunchPropsAsync } from './resolveLaunchProps';
4*8a424bebSJames Ideimport { AndroidDeviceManager } from '../../start/platforms/android/AndroidDeviceManager';
5*8a424bebSJames Ideimport { BundlerProps, resolveBundlerPropsAsync } from '../resolveBundlerProps';
63d6e487dSEvan Bacon
73d6e487dSEvan Baconexport type Options = {
83d6e487dSEvan Bacon  variant?: string;
93d6e487dSEvan Bacon  device?: boolean | string;
103d6e487dSEvan Bacon  port?: number;
113d6e487dSEvan Bacon  bundler?: boolean;
123d6e487dSEvan Bacon  install?: boolean;
133d6e487dSEvan Bacon  buildCache?: boolean;
143d6e487dSEvan Bacon};
153d6e487dSEvan Bacon
163d6e487dSEvan Baconexport type ResolvedOptions = GradleProps &
173d6e487dSEvan Bacon  BundlerProps &
183d6e487dSEvan Bacon  LaunchProps & {
193d6e487dSEvan Bacon    variant: string;
203d6e487dSEvan Bacon    buildCache: boolean;
213d6e487dSEvan Bacon    device: AndroidDeviceManager;
223d6e487dSEvan Bacon    install: boolean;
233d6e487dSEvan Bacon  };
243d6e487dSEvan Bacon
253d6e487dSEvan Baconexport async function resolveOptionsAsync(
263d6e487dSEvan Bacon  projectRoot: string,
273d6e487dSEvan Bacon  options: Options
283d6e487dSEvan Bacon): Promise<ResolvedOptions> {
293d6e487dSEvan Bacon  return {
303d6e487dSEvan Bacon    ...(await resolveBundlerPropsAsync(projectRoot, options)),
313d6e487dSEvan Bacon    ...resolveGradleProps(projectRoot, options),
323d6e487dSEvan Bacon    ...(await resolveLaunchPropsAsync(projectRoot)),
333d6e487dSEvan Bacon    variant: options.variant ?? 'debug',
343d6e487dSEvan Bacon    // Resolve the device based on the provided device id or prompt
353d6e487dSEvan Bacon    // from a list of devices (connected or simulated) that are filtered by the scheme.
363d6e487dSEvan Bacon    device: await resolveDeviceAsync(options.device),
373d6e487dSEvan Bacon    buildCache: !!options.buildCache,
383d6e487dSEvan Bacon    install: !!options.install,
393d6e487dSEvan Bacon  };
403d6e487dSEvan Bacon}
41