in src/commands/createWebApp/stacks/getStackPicks.ts [17:75]
export async function getStackPicks(context: IWebAppWizardContext, javaVersion?: string): Promise<IAzureQuickPickItem<FullWebAppStack | FullJavaStack>[]> {
const stacks: WebAppStack[] = (await getStacks(context)).filter(s => (javaVersion && s.value === 'javacontainers') || (!javaVersion && s.value !== 'javacontainers'));
const picks: IAzureQuickPickItem<FullWebAppStack | FullJavaStack>[] = [];
for (const stack of stacks) {
for (const majorVersion of stack.majorVersions) {
// Filter out versions that have major, minor, _and_ patch specified (Aka we only want Node.js 14, not Node.js 14.1.1)
const minorVersions: (AppStackMinorVersion<WebAppRuntimes & JavaContainers>)[] = majorVersion.minorVersions.filter(mv => !/\..*\./.test(mv.value));
for (const minorVersion of minorVersions) {
let description: string | undefined;
const previewOs = getFlagOs(minorVersion.stackSettings, 'isPreview');
switch (previewOs) {
case 'All':
description = localize('preview', '(Preview)');
break;
case 'Linux':
case 'Windows':
description = localize('previewOnOS', '(Preview on {0})', previewOs);
break;
}
const earlyAccessOS = getFlagOs(minorVersion.stackSettings, 'isEarlyAccess');
switch (earlyAccessOS) {
case 'All':
description = localize('earlyAccess', '(Early Access)');
break;
case 'Linux':
case 'Windows':
description = localize('earlyAccessOnOS', '(Early Access on {0})', earlyAccessOS);
break;
}
picks.push({
label: minorVersion.displayText,
description,
group: stack.displayText,
data: { stack, majorVersion, minorVersion }
});
}
}
}
if (context.usingBackupStacks) {
// We want the warning to show up first, so suppress persistence
for (const pick of picks) {
pick.suppressPersistence = true;
}
picks.unshift({
label: localize('backupStacksWarning', '$(warning) Failed to retrieve latest stacks. This list may be out of date.'),
onPicked: () => { /* do nothing */ },
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any
data: <any>undefined
})
}
return picks;
}