1import chalk from 'chalk'; 2import inquirer from 'inquirer'; 3import semver from 'semver'; 4 5import { Platform, getSDKVersionsAsync } from '../ProjectVersions'; 6 7export default async function askForSDKVersionAsync( 8 platform: Platform, 9 defaultSdkVersion?: string 10) { 11 const sdkVersions = await getSDKVersionsAsync(platform); 12 13 if (process.env.CI) { 14 if (defaultSdkVersion) { 15 console.log( 16 `${chalk.red('`--sdkVersion`')} not provided - defaulting to ${chalk.cyan( 17 defaultSdkVersion 18 )}.` 19 ); 20 return defaultSdkVersion; 21 } 22 throw new Error( 23 `${chalk.red('`--sdkVersion`')} not provided and unable to obtain default value.` 24 ); 25 } 26 27 const defaultValue = 28 defaultSdkVersion && sdkVersions.includes(defaultSdkVersion) 29 ? defaultSdkVersion 30 : sdkVersions[sdkVersions.length - 1]; 31 const { sdkVersion } = await inquirer.prompt<{ sdkVersion: string }>([ 32 { 33 type: 'list', 34 name: 'sdkVersion', 35 message: 'What is the SDK version that you want to run this script against?', 36 default: defaultValue, 37 choices: sdkVersions, 38 validate(value) { 39 if (!semver.valid(value)) { 40 return `Invalid version: ${chalk.cyan(value)}`; 41 } 42 return true; 43 }, 44 }, 45 ]); 46 return sdkVersion; 47} 48