Exemplo n.º 1
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"));
        }
Exemplo n.º 2
0
        private static bool GenerateUsageForTemplate(ITemplateInfo templateInfo, IHostSpecificDataLoader hostDataLoader, string commandName)
        {
            HostSpecificTemplateData hostTemplateData = hostDataLoader.ReadHostSpecificTemplateData(templateInfo);

            if (hostTemplateData.UsageExamples != null)
            {
                if (hostTemplateData.UsageExamples.Count == 0)
                {
                    return(false);
                }

                Reporter.Output.WriteLine($"    dotnet {commandName} {templateInfo.ShortName} {hostTemplateData.UsageExamples[0]}");
                return(true);
            }

            Reporter.Output.Write($"    dotnet {commandName} {templateInfo.ShortName}");
            IReadOnlyList <ITemplateParameter> allParameterDefinitions = templateInfo.Parameters;
            IEnumerable <ITemplateParameter>   filteredParams          = TemplateParameterHelpBase.FilterParamsForHelp(allParameterDefinitions, hostTemplateData.HiddenParameterNames, parametersToAlwaysShow: hostTemplateData.ParametersToAlwaysShow);

            foreach (ITemplateParameter parameter in filteredParams)
            {
                if (string.Equals(parameter.DataType, "bool", StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(parameter.DefaultValue, "false", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                else if (string.Equals(parameter.DataType, "string", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                else if (string.Equals(parameter.DataType, "choice", StringComparison.OrdinalIgnoreCase) && parameter.Choices.Count == 1)
                {
                    continue;
                }

                string displayParameter = hostTemplateData.DisplayNameForParameter(parameter.Name);

                Reporter.Output.Write($" --{displayParameter}");

                if (!string.IsNullOrEmpty(parameter.DefaultValue) && !string.Equals(parameter.DataType, "bool", StringComparison.OrdinalIgnoreCase))
                {
                    Reporter.Output.Write($" {parameter.DefaultValue}");
                }
            }

            Reporter.Output.WriteLine();
            return(true);
        }