Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        private static ITemplateEngineHost CreateHost(IInstalledPackInfo packInfo)
        {
            string hostIdentifier = HostIdentifierBase + packInfo.Id;

            ITemplateEngineHost host = TemplateEngineHostHelper.CreateHost(hostIdentifier);

            return(host);
        }
Esempio n. 3
0
        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;
                }
            }
        }
Esempio n. 5
0
 public PackCheckResult(IInstalledPackInfo packInfo, PreFilterResultList preFilterResults)
 {
     PackInfo         = packInfo;
     PreFilterResults = preFilterResults;
     FoundTemplates   = new List <ITemplateInfo>();
 }
Esempio n. 6
0
 public PackCheckResult(IInstalledPackInfo packInfo, IReadOnlyList <ITemplateInfo> foundTemplates)
 {
     PackInfo         = packInfo;
     PreFilterResults = new PreFilterResultList();
     FoundTemplates   = foundTemplates;
 }
Esempio n. 7
0
        private PackCheckResult PrefilterPackInfo(IInstalledPackInfo packInfo)
        {
            PreFilterResultList preFilterResult = _packPreFilterer.FilterPack(packInfo);

            return(new PackCheckResult(packInfo, preFilterResult));
        }