in src/PSRule.Rules.Azure/Data/Template/TemplateLinkHelper.cs [41:73]
internal TemplateLink ProcessParameterFile(string parameterFile)
{
// Check that the JSON file is an ARM template parameter file
var rootedParameterFile = PSRuleOption.GetRootedPath(parameterFile);
var parameterObject = ReadFile(rootedParameterFile);
if (parameterObject == null || !IsParameterFile(parameterObject))
return null;
// Check if metadata property exists
if (!(TryMetadata(parameterObject, rootedParameterFile, out var metadata, out var templateFile) ||
TryTemplateByName(PARAMETER_FILE_SUFFIX, parameterFile, out templateFile)))
{
if (metadata == null && !_SkipUnlinked)
throw new InvalidTemplateLinkException(string.Format(CultureInfo.CurrentCulture, PSRuleResources.MetadataNotFound, parameterFile));
if (templateFile == null && !_SkipUnlinked)
throw new InvalidTemplateLinkException(string.Format(CultureInfo.CurrentCulture, PSRuleResources.TemplateLinkNotFound, parameterFile));
return null;
}
var templateLink = new TemplateLink(templateFile, rootedParameterFile);
// Populate remaining properties
if (TryStringProperty(metadata, PROPERTYNAME_NAME, out var name))
templateLink.Name = name;
if (TryStringProperty(metadata, PROPERTYNAME_DESCRIPTION, out var description))
templateLink.Description = description;
AddMetadata(templateLink, metadata);
return templateLink;
}