in src/templates/script/parseScriptTemplates.ts [176:232]
export function parseScriptTemplate(rawTemplate: IRawTemplate, resources: IResources, bindingTemplates: IBindingTemplate[]): IScriptFunctionTemplate | undefined {
if (!rawTemplate.id || !rawTemplate.metadata) {
return undefined;
}
const functionJson: ParsedFunctionJson = new ParsedFunctionJson(rawTemplate.function);
let language: ProjectLanguage = rawTemplate.metadata.language;
// The templateApiZip only supports script languages, and thus incorrectly defines 'C#Script' as 'C#', etc.
switch (language) {
case ProjectLanguage.CSharp:
language = ProjectLanguage.CSharpScript;
break;
case ProjectLanguage.FSharp:
language = ProjectLanguage.FSharpScript;
break;
// The schema of Java templates is the same as script languages, so put it here.
case ProjectLanguage.Java:
language = ProjectLanguage.Java;
break;
default:
}
const userPromptedSettings: IBindingSetting[] = [];
if (rawTemplate.metadata.userPrompt) {
for (const settingName of rawTemplate.metadata.userPrompt) {
if (functionJson.triggerBinding) {
const triggerBinding: IFunctionBinding = functionJson.triggerBinding;
const bindingTemplate: IBindingTemplate | undefined = bindingTemplates.find(b => b.type.toLowerCase() === triggerBinding.type?.toLowerCase());
if (bindingTemplate) {
const setting: IBindingSetting | undefined = bindingTemplate.settings.find((bs: IBindingSetting) => bs.name === settingName);
if (setting) {
const functionSpecificDefaultValue = triggerBinding[setting.name];
if (functionSpecificDefaultValue) {
// overwrite common default value with the function-specific default value
setting.defaultValue = functionSpecificDefaultValue;
}
userPromptedSettings.push(setting);
}
}
}
}
}
return {
functionJson,
isHttpTrigger: functionJson.isHttpTrigger,
isTimerTrigger: functionJson.isTimerTrigger,
id: rawTemplate.id,
name: getResourceValue(resources, rawTemplate.metadata.name),
defaultFunctionName: rawTemplate.metadata.defaultFunctionName,
language,
userPromptedSettings,
templateFiles: rawTemplate.files || {},
categories: rawTemplate.metadata.category || []
};
}