예제 #1
0
        public ITemplate?LoadTemplate(ITemplateInfo info, string?baselineName)
        {
            IGenerator?generator;

            if (!_environmentSettings.Components.TryGetComponent(info.GeneratorId, out generator))
            {
                return(null);
            }
            IMountPoint?mountPoint;

            if (!_environmentSettings.TryGetMountPoint(info.MountPointUri, out mountPoint))
            {
                return(null);
            }
            IFile?config = mountPoint !.FileInfo(info.ConfigPlace);

            if (config == null)
            {
                return(null);
            }
            IFile?    localeConfig           = string.IsNullOrEmpty(info.LocaleConfigPlace) ? null : mountPoint.FileInfo(info.LocaleConfigPlace !);
            IFile?    hostTemplateConfigFile = string.IsNullOrEmpty(info.HostConfigPlace) ? null : mountPoint.FileInfo(info.HostConfigPlace !);
            ITemplate?template;

            using (Timing.Over(_environmentSettings.Host.Logger, $"Template from config {config.MountPoint.MountPointUri}{config.FullPath}"))
            {
                if (generator !.TryGetTemplateFromConfigInfo(config, out template, localeConfig, hostTemplateConfigFile, baselineName))
                {
                    return(template);
                }
예제 #2
0
        public void CanReadHostDataFromITemplateInfo()
        {
            IEngineEnvironmentSettings engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true);
            HostSpecificDataLoader     hostSpecificDataLoader    = new HostSpecificDataLoader(engineEnvironmentSettings);

            Assert.True(engineEnvironmentSettings.TryGetMountPoint(Directory.GetCurrentDirectory(), out IMountPoint? mountPoint));
            Assert.NotNull(mountPoint);
            IFile?dataFile = mountPoint !.FileInfo("/Resources/dotnetcli.host.json");

            Assert.NotNull(dataFile);
            JObject json = ReadJObjectFromIFile(dataFile !);

            ITemplateInfo template = A.Fake <ITemplateInfo>(builder => builder.Implements <ITemplateInfoHostJsonCache>().Implements <ITemplateInfo>());

            A.CallTo(() => ((ITemplateInfoHostJsonCache)template).HostData).Returns(json);

            HostSpecificTemplateData data = hostSpecificDataLoader.ReadHostSpecificTemplateData(template);

            Assert.NotNull(data);

            Assert.False(data.IsHidden);
            Assert.Equal(2, data.UsageExamples?.Count);
            Assert.Contains("--framework netcoreapp3.1 --langVersion '9.0'", data.UsageExamples);
            Assert.Equal(4, data.SymbolInfo?.Count);
            Assert.Contains("TargetFrameworkOverride", data.HiddenParameterNames);
            Assert.Contains("Framework", data.ParametersToAlwaysShow);
            Assert.True(data.LongNameOverrides.ContainsKey("skipRestore"));
            Assert.Equal("no-restore", data.LongNameOverrides["skipRestore"]);
            Assert.True(data.ShortNameOverrides.ContainsKey("skipRestore"));
            Assert.Equal("", data.ShortNameOverrides["skipRestore"]);
            Assert.Equal("no-restore", data.DisplayNameForParameter("skipRestore"));
        }