| File: Commands\NewCommandArgs.cs | Web Access |
| Project: src\sdk\src\Cli\Microsoft.TemplateEngine.Cli\Microsoft.TemplateEngine.Cli.csproj (Microsoft.TemplateEngine.Cli) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.CommandLine; using System.CommandLine.Help; using System.CommandLine.Parsing; using Microsoft.DotNet.Cli.Commands.New; namespace Microsoft.TemplateEngine.Cli.Commands { internal sealed class NewCommandArgs : GlobalArgs { private IEnumerable<string> s_passByOptionNames = [ SharedOptionsFactory.ForceOptionName, SharedOptionsFactory.NameOptionName, SharedOptionsFactory.DryRunOptionName, SharedOptionsFactory.NoUpdateCheckOptionName ]; public NewCommandArgs(NewCommand command, ParseResult parseResult) : base(parseResult) { List<Token> tokensToEvaluate = new(); foreach (var childrenResult in parseResult.CommandResult.Children) { if (childrenResult is OptionResult o) { if (IsHelpOption(o)) { continue; } if (!LegacyOptions.AllNames.Contains(o.Option.Name) && !s_passByOptionNames.Contains(o.Option.Name)) { continue; } if (o.IdentifierToken is { } token) { tokensToEvaluate.Add(token); } tokensToEvaluate.AddRange(o.Tokens); } else { tokensToEvaluate.AddRange(childrenResult.Tokens); } } Tokens = tokensToEvaluate .Select(t => t.Value).ToArray(); } internal string[] Tokens { get; } private static bool IsHelpOption(SymbolResult result) => result is OptionResult optionResult && optionResult.Option is HelpOption; } }