private ProvisioningHierarchy GetHierarchy() { if (!System.IO.Path.IsPathRooted(Path)) { Path = System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, Path); } if (System.IO.File.Exists(Path)) { return(ReadTenantTemplate.LoadProvisioningHierarchyFromFile(Path, TemplateProviderExtensions, (e) => { WriteError(new ErrorRecord(e, "TEMPLATENOTVALID", ErrorCategory.SyntaxError, null)); })); } else { throw new FileNotFoundException($"File {Path} does not exist."); } }
internal static void ProcessFiles(ProvisioningHierarchy tenantTemplate, string templateFileName, FileConnectorBase fileSystemConnector, FileConnectorBase connector, Action <string> progress) { var templateFile = ReadTenantTemplate.LoadProvisioningHierarchyFromFile(templateFileName, null, null); if (tenantTemplate.Tenant?.AppCatalog != null) { foreach (var app in tenantTemplate.Tenant.AppCatalog.Packages) { progress($"Processing {app.Src}"); AddFile(app.Src, templateFile, fileSystemConnector, connector); } } if (tenantTemplate.Tenant?.SiteScripts != null) { foreach (var siteScript in tenantTemplate.Tenant.SiteScripts) { progress($"Processing {siteScript.JsonFilePath}"); AddFile(siteScript.JsonFilePath, templateFile, fileSystemConnector, connector); } } if (tenantTemplate.Localizations != null && tenantTemplate.Localizations.Any()) { foreach (var location in tenantTemplate.Localizations) { progress($"Processing {location.ResourceFile}"); AddFile(location.ResourceFile, templateFile, fileSystemConnector, connector); } } foreach (var template in tenantTemplate.Templates) { if (template.WebSettings != null && !String.IsNullOrEmpty(template.WebSettings.SiteLogo)) { // is it a file? var isFile = false; try { using (var fileStream = fileSystemConnector.GetFileStream(template.WebSettings.SiteLogo)) { isFile = fileStream != null; } } catch { } if (isFile) { progress($"Processing {template.WebSettings.SiteLogo}"); AddFile(template.WebSettings.SiteLogo, templateFile, fileSystemConnector, connector); } } if (template.Files.Any()) { foreach (var file in template.Files) { progress($"Processing {file.Src}"); AddFile(file.Src, templateFile, fileSystemConnector, connector); } } if (template.Lists.Any()) { foreach (var list in template.Lists) { if (list.DataRows.Any()) { foreach (var dataRow in list.DataRows) { if (dataRow.Attachments.Any()) { progress("List attachments"); foreach (var attachment in dataRow.Attachments) { AddFile(attachment.Src, templateFile, fileSystemConnector, connector); } } } } } } } if (templateFile.Connector is ICommitableFileConnector) { ((ICommitableFileConnector)templateFile.Connector).Commit(); } }