import chalk from 'chalk'; import inquirer from 'inquirer'; import semver from 'semver'; import { Platform, getSDKVersionsAsync } from '../ProjectVersions'; export default async function askForSDKVersionAsync( platform: Platform, defaultSdkVersion?: string ) { const sdkVersions = await getSDKVersionsAsync(platform); if (process.env.CI) { if (defaultSdkVersion) { console.log( `${chalk.red('`--sdkVersion`')} not provided - defaulting to ${chalk.cyan( defaultSdkVersion )}.` ); return defaultSdkVersion; } throw new Error( `${chalk.red('`--sdkVersion`')} not provided and unable to obtain default value.` ); } const defaultValue = defaultSdkVersion && sdkVersions.includes(defaultSdkVersion) ? defaultSdkVersion : sdkVersions[sdkVersions.length - 1]; const { sdkVersion } = await inquirer.prompt<{ sdkVersion: string }>([ { type: 'list', name: 'sdkVersion', message: 'What is the SDK version that you want to run this script against?', default: defaultValue, choices: sdkVersions, validate(value) { if (!semver.valid(value)) { return `Invalid version: ${chalk.cyan(value)}`; } return true; }, }, ]); return sdkVersion; }