in src/commands/createNewProject/NewProjectLanguageStep.ts [78:130]
public async getSubWizard(context: IProjectWizardContext): Promise<IWizardOptions<IProjectWizardContext>> {
const language: ProjectLanguage = nonNullProp(context, 'language');
const executeSteps: AzureWizardExecuteStep<IProjectWizardContext>[] = [];
const promptSteps: AzureWizardPromptStep<IProjectWizardContext>[] = [];
switch (language) {
case ProjectLanguage.JavaScript:
executeSteps.push(new JavaScriptProjectCreateStep());
break;
case ProjectLanguage.TypeScript:
executeSteps.push(new TypeScriptProjectCreateStep());
break;
case ProjectLanguage.CSharp:
case ProjectLanguage.FSharp:
promptSteps.push(await DotnetRuntimeStep.createStep(context));
executeSteps.push(await DotnetProjectCreateStep.createStep(context));
break;
case ProjectLanguage.Python:
executeSteps.push(new PythonProjectCreateStep());
break;
case ProjectLanguage.PowerShell:
executeSteps.push(new PowerShellProjectCreateStep());
break;
case ProjectLanguage.Java:
await JavaVersionStep.setDefaultVersion(context);
await JavaBuildToolStep.setDefaultBuildTool(context); // Set build tool to maven as other Java project with other build tool is not supported now
promptSteps.push(new JavaVersionStep(), new JavaGroupIdStep(), new JavaArtifactIdStep(), new JavaProjectVersionStep(), new JavaPackageNameStep(), new JavaAppNameStep());
executeSteps.push(await JavaProjectCreateStep.createStep(context));
break;
case ProjectLanguage.Custom:
executeSteps.push(new CustomProjectCreateStep());
break;
default:
executeSteps.push(new ScriptProjectCreateStep());
break;
}
await addInitVSCodeSteps(context, promptSteps, executeSteps);
const wizardOptions: IWizardOptions<IProjectWizardContext> = { promptSteps, executeSteps };
// All languages except Java support creating a function after creating a project
// Java needs to fix this issue first: https://github.com/Microsoft/vscode-azurefunctions/issues/81
if (language !== ProjectLanguage.Java) {
promptSteps.push(await FunctionListStep.create(context, {
isProjectWizard: true,
templateId: this._templateId,
functionSettings: this._functionSettings
}));
}
return wizardOptions;
}