public PackCheckResult TryGetTemplatesInPack(IInstalledPackInfo packInfo, IReadOnlyList <IAdditionalDataProducer> additionalDataProducers, HashSet <string> alreadySeenTemplateIdentities, bool persistHive = false) { ITemplateEngineHost host = CreateHost(packInfo); EngineEnvironmentSettings environment = new EngineEnvironmentSettings(host, x => new SettingsLoader(x)); PackCheckResult checkResult; try { if (TryInstallPackage(packInfo.Path, environment, out IReadOnlyList <ITemplateInfo> installedTemplates)) { IReadOnlyList <ITemplateInfo> filteredInstalledTemplates = installedTemplates.Where(t => !alreadySeenTemplateIdentities.Contains(t.Identity)).ToList(); checkResult = new PackCheckResult(packInfo, filteredInstalledTemplates); ProduceAdditionalDataForPack(additionalDataProducers, checkResult, environment); } else { IReadOnlyList <ITemplateInfo> foundTemplates = new List <ITemplateInfo>(); checkResult = new PackCheckResult(packInfo, foundTemplates); } } catch { IReadOnlyList <ITemplateInfo> foundTemplates = new List <ITemplateInfo>(); checkResult = new PackCheckResult(packInfo, foundTemplates); } if (!persistHive) { TryCleanup(environment); } return(checkResult); }
private static ITemplateEngineHost CreateHost(IInstalledPackInfo packInfo) { string hostIdentifier = HostIdentifierBase + packInfo.Id; ITemplateEngineHost host = TemplateEngineHostHelper.CreateHost(hostIdentifier); return(host); }
public PreFilterResultList FilterPack(IInstalledPackInfo packInfo) { List <PreFilterResult> resultList = new List <PreFilterResult>(); foreach (Func <IInstalledPackInfo, PreFilterResult> filter in _preFilters) { PreFilterResult result = filter(packInfo); resultList.Add(result); } return(new PreFilterResultList(resultList)); }
public void CreateDataForTemplatePack(IInstalledPackInfo packInfo, IReadOnlyList <ITemplateInfo> templateList, IEngineEnvironmentSettings environment) { IHostSpecificDataLoader hostDataLoader = new HostSpecificDataLoader(environment.SettingsLoader); foreach (ITemplateInfo template in templateList) { HostSpecificTemplateData hostData = hostDataLoader.ReadHostSpecificTemplateData(template); // store the host data if it has any info that could affect searching for this template. if (hostData.IsHidden || hostData.SymbolInfo.Count > 0) { _hostDataForPackByTemplate[template.Identity] = hostData; } } }
public PackCheckResult(IInstalledPackInfo packInfo, PreFilterResultList preFilterResults) { PackInfo = packInfo; PreFilterResults = preFilterResults; FoundTemplates = new List <ITemplateInfo>(); }
public PackCheckResult(IInstalledPackInfo packInfo, IReadOnlyList <ITemplateInfo> foundTemplates) { PackInfo = packInfo; PreFilterResults = new PreFilterResultList(); FoundTemplates = foundTemplates; }
private PackCheckResult PrefilterPackInfo(IInstalledPackInfo packInfo) { PreFilterResultList preFilterResult = _packPreFilterer.FilterPack(packInfo); return(new PackCheckResult(packInfo, preFilterResult)); }