xref: /expo/tools/src/utils/askForPlatformAsync.ts (revision eeffdb10)
1*eeffdb10STomasz Sapetaimport inquirer from 'inquirer';
2*eeffdb10STomasz Sapeta
3*eeffdb10STomasz Sapetaimport { Platform } from '../ProjectVersions';
4*eeffdb10STomasz Sapeta
5*eeffdb10STomasz Sapetaexport default async function askForPlatformAsync(
6*eeffdb10STomasz Sapeta  platforms: Platform[] = ['ios', 'android']
7*eeffdb10STomasz Sapeta): Promise<Platform> {
8*eeffdb10STomasz Sapeta  if (process.env.CI) {
9*eeffdb10STomasz Sapeta    throw new Error(`Run with \`--platform <${platforms.join(' | ')}>\`.`);
10*eeffdb10STomasz Sapeta  }
11*eeffdb10STomasz Sapeta
12*eeffdb10STomasz Sapeta  if (platforms.length === 1) {
13*eeffdb10STomasz Sapeta    return platforms[0];
14*eeffdb10STomasz Sapeta  }
15*eeffdb10STomasz Sapeta
16*eeffdb10STomasz Sapeta  const { platform } = await inquirer.prompt<{ platform: Platform }>([
17*eeffdb10STomasz Sapeta    {
18*eeffdb10STomasz Sapeta      type: 'list',
19*eeffdb10STomasz Sapeta      name: 'platform',
20*eeffdb10STomasz Sapeta      message: 'For which platform you want to run this script?',
21*eeffdb10STomasz Sapeta      default: platforms[0],
22*eeffdb10STomasz Sapeta      choices: platforms,
23*eeffdb10STomasz Sapeta    },
24*eeffdb10STomasz Sapeta  ]);
25*eeffdb10STomasz Sapeta  return platform;
26*eeffdb10STomasz Sapeta}
27