internal TemplateLink ProcessParameterFile()

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;
        }