namespace Spectre.Console.Cli; internal sealed class CommandOption : CommandParameter { public IReadOnlyList LongNames { get; } public IReadOnlyList ShortNames { get; } public string? ValueName { get; } public bool ValueIsOptional { get; } public bool IsShadowed { get; set; } public CommandOption( Type parameterType, ParameterKind parameterKind, PropertyInfo property, string? description, TypeConverterAttribute? converter, PairDeconstructorAttribute? deconstructor, CommandOptionAttribute optionAttribute, ParameterValueProviderAttribute? valueProvider, IEnumerable validators, DefaultValueAttribute? defaultValue, bool valueIsOptional) : base(parameterType, parameterKind, property, description, converter, defaultValue, deconstructor, valueProvider, validators, false, optionAttribute.IsHidden) { LongNames = optionAttribute.LongNames; ShortNames = optionAttribute.ShortNames; ValueName = optionAttribute.ValueName; ValueIsOptional = valueIsOptional; } public string GetOptionName() { return LongNames.Count > 0 ? LongNames[0] : ShortNames[0]; } }