in src/handler.ts [543:571]
function getScope(files: ParsedFiles): ScopeType | undefined {
const template = files.templateContents ?? {};
const bicepGenerated = template.metadata?._generator?.name;
const schema = template["$schema"];
if (!bicepGenerated) {
// loose validation for non-Bicep generated templates, to match Azure CLI behavior
return;
}
const result =
/https:\/\/schema\.management\.azure\.com\/schemas\/[0-9a-zA-Z-]+\/([a-zA-Z]+)Template\.json#?/.exec(
schema,
);
const scopeMatch = result ? result[1].toLowerCase() : null;
switch (scopeMatch) {
case "tenantdeployment":
return "tenant";
case "managementgroupdeployment":
return "managementGroup";
case "subscriptiondeployment":
return "subscription";
case "deployment":
return "resourceGroup";
default:
throw new Error(`Failed to determine deployment scope from Bicep file.`);
}
}