private IEnumerable <TemplateSearchData> TryGetTemplatesInPack(IDownloadedPackInfo packInfo, IReadOnlyList <IAdditionalDataProducer> additionalDataProducers) { ITemplateEngineHost host = TemplateEngineHostHelper.CreateHost(HostIdentifierBase + packInfo.Name); using EngineEnvironmentSettings environmentSettings = new EngineEnvironmentSettings(host, virtualizeSettings: true); Scanner scanner = new Scanner(environmentSettings); try { using var scanResult = scanner.Scan(packInfo.Path, scanForComponents: false); if (scanResult.Templates.Any()) { foreach (IAdditionalDataProducer dataProducer in additionalDataProducers) { #pragma warning disable CS0612 // Type or member is obsolete dataProducer.CreateDataForTemplatePack(packInfo, scanResult.Templates, environmentSettings); #pragma warning restore CS0612 // Type or member is obsolete } return(scanResult.Templates.Select(t => new TemplateSearchData(t, t.ProduceAdditionalData(additionalDataProducers, environmentSettings)))); } return(Array.Empty <TemplateSearchData>()); } catch (TaskCanceledException) { throw; } catch (Exception ex) { Console.WriteLine("Failed to read package {0}::{1}, details: {2}. The package will be skipped.", packInfo.Name, packInfo.Version, ex); return(Array.Empty <TemplateSearchData>()); } }
private static ITemplateEngineHost CreateHost(IInstalledPackInfo packInfo) { string hostIdentifier = HostIdentifierBase + packInfo.Id; ITemplateEngineHost host = TemplateEngineHostHelper.CreateHost(hostIdentifier); return(host); }
static TemplateJsonExistencePackFilter() { _host = TemplateEngineHostHelper.CreateHost("filterHost"); _environemntSettings = new EngineEnvironmentSettings(_host, x => new SettingsLoader(x)); }