internal PSObject[] ProcessTemplate(string templateFile, string parametersFile) { var templateObject = ReadFile <JObject>(PSRuleOption.GetRootedPath(templateFile)); if (templateObject == null) { throw new FileNotFoundException(); } var parametersObject = parametersFile != null?ReadFile <JObject>(PSRuleOption.GetRootedPath(parametersFile)) : null; var visitor = new RuleDataExportVisitor(); // Load context var context = new TemplateVisitor.TemplateContext(_Subscription, _ResourceGroup); context.Load(parametersObject); visitor.Visit(context, _DeploymentName, templateObject); // Return results var results = new List <PSObject>(); var serializer = new JsonSerializer(); serializer.Converters.Add(new PSObjectJsonConverter()); foreach (var resource in context.Resources) { results.Add(resource.ToObject <PSObject>(serializer)); } return(results.ToArray()); }
internal PSObject[] ProcessTemplate(string templateFile, string parameterFile) { var rootedTemplateFile = PSRuleOption.GetRootedPath(templateFile); if (!File.Exists(rootedTemplateFile)) { throw new FileNotFoundException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.TemplateFileNotFound, rootedTemplateFile), rootedTemplateFile); } var templateObject = ReadFile(rootedTemplateFile); var visitor = new RuleDataExportVisitor(); // Load context var context = new TemplateVisitor.TemplateContext(Context, _Subscription, _ResourceGroup); if (!string.IsNullOrEmpty(parameterFile)) { var rootedParameterFile = PSRuleOption.GetRootedPath(parameterFile); if (!File.Exists(rootedParameterFile)) { throw new FileNotFoundException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.ParameterFileNotFound, rootedParameterFile), rootedParameterFile); } try { var parametersObject = ReadFile(rootedParameterFile); context.Load(parametersObject); } catch (Exception inner) { throw new TemplateReadException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.TemplateExpandInvalid, templateFile, parameterFile, inner.Message), inner, templateFile, parameterFile); } } // Process try { visitor.Visit(context, _DeploymentName, templateObject); } catch (Exception inner) { throw new TemplateReadException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.TemplateExpandInvalid, templateFile, parameterFile, inner.Message), inner, templateFile, parameterFile); } // Return results var results = new List <PSObject>(); var serializer = new JsonSerializer(); serializer.Converters.Add(new PSObjectJsonConverter()); foreach (var resource in context.Resources) { results.Add(resource.ToObject <PSObject>(serializer)); } return(results.ToArray()); }