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