mirror of
				https://github.com/nsnail/spectre.console.git
				synced 2025-11-01 01:25:27 +08:00 
			
		
		
		
	Added the ability to hide CommandOptions. (#642)
CommandOptions now has an IsHidden property that, when set to true, will cause the option to be hidden from the following cases: - Help text using `-h|--help` - Xml representations generated with the `cli xml` command - Diagnostics displayed with the `cli explain` command Hidden options can still be outputted with `cli explain` using the `--hidden` option that is also used to display hidden commands. Fixes #631
This commit is contained in:
		| @@ -34,6 +34,11 @@ namespace Spectre.Console.Cli | ||||
|         /// </summary> | ||||
|         public bool ValueIsOptional { get; } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets or sets a value indicating whether this option is hidden from the help text. | ||||
|         /// </summary> | ||||
|         public bool IsHidden { get; set; } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Initializes a new instance of the <see cref="CommandOptionAttribute"/> class. | ||||
|         /// </summary> | ||||
|   | ||||
| @@ -36,7 +36,7 @@ namespace Spectre.Console.Cli | ||||
|             [CommandOption("-d|--detailed")] | ||||
|             public bool? Detailed { get; } | ||||
|  | ||||
|             [Description("Include hidden commands.")] | ||||
|             [Description("Include hidden commands and options.")] | ||||
|             [CommandOption("--hidden")] | ||||
|             public bool IncludeHidden { get; } | ||||
|         } | ||||
| @@ -166,7 +166,7 @@ namespace Spectre.Console.Cli | ||||
|                     var parametersNode = commandNode.AddNode(ParentMarkup("Parameters")); | ||||
|                     foreach (var parameter in command.Parameters) | ||||
|                     { | ||||
|                         AddParameter(parametersNode, parameter, detailed); | ||||
|                         AddParameter(parametersNode, parameter, detailed, includeHidden); | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
| @@ -181,8 +181,13 @@ namespace Spectre.Console.Cli | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private void AddParameter(TreeNode parametersNode, CommandParameter parameter, bool detailed) | ||||
|         private void AddParameter(TreeNode parametersNode, CommandParameter parameter, bool detailed, bool includeHidden) | ||||
|         { | ||||
|             if (!includeHidden && parameter.IsHidden) | ||||
|             { | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             if (!detailed) | ||||
|             { | ||||
|                 parametersNode.AddNode( | ||||
|   | ||||
| @@ -153,6 +153,7 @@ namespace Spectre.Console.Cli | ||||
|  | ||||
|             // Options | ||||
|             foreach (var option in command.Parameters.OfType<CommandOption>() | ||||
|                 .Where(x => !x.IsHidden) | ||||
|                 .OrderBy(x => string.Join(",", x.LongNames)) | ||||
|                 .ThenBy(x => string.Join(",", x.ShortNames))) | ||||
|             { | ||||
|   | ||||
| @@ -61,7 +61,7 @@ namespace Spectre.Console.Cli | ||||
|                     parameters.Add(new HelpOption("v", "version", null, null, "Prints version information")); | ||||
|                 } | ||||
|  | ||||
|                 parameters.AddRange(command?.Parameters?.OfType<CommandOption>()?.Select(o => | ||||
|                 parameters.AddRange(command?.Parameters.OfType<CommandOption>().Where(o => !o.IsHidden).Select(o => | ||||
|                     new HelpOption( | ||||
|                         o.ShortNames.FirstOrDefault(), o.LongNames.FirstOrDefault(), | ||||
|                         o.ValueName, o.ValueIsOptional, o.Description)) | ||||
|   | ||||
| @@ -16,7 +16,7 @@ namespace Spectre.Console.Cli | ||||
|             CommandArgumentAttribute argument, ParameterValueProviderAttribute? valueProvider, | ||||
|             IEnumerable<ParameterValidationAttribute> validators) | ||||
|                 : base(parameterType, parameterKind, property, description, converter, defaultValue, | ||||
|                       null, valueProvider, validators, argument.IsRequired) | ||||
|                       null, valueProvider, validators, argument.IsRequired, false) | ||||
|         { | ||||
|             Value = argument.ValueName; | ||||
|             Position = argument.Position; | ||||
|   | ||||
| @@ -20,7 +20,7 @@ namespace Spectre.Console.Cli | ||||
|             IEnumerable<ParameterValidationAttribute> validators, | ||||
|             DefaultValueAttribute? defaultValue, bool valueIsOptional) | ||||
|                 : base(parameterType, parameterKind, property, description, converter, | ||||
|                       defaultValue, deconstructor, valueProvider, validators, false) | ||||
|                       defaultValue, deconstructor, valueProvider, validators, false, optionAttribute.IsHidden) | ||||
|         { | ||||
|             LongNames = optionAttribute.LongNames; | ||||
|             ShortNames = optionAttribute.ShortNames; | ||||
|   | ||||
| @@ -19,6 +19,7 @@ namespace Spectre.Console.Cli | ||||
|         public List<ParameterValidationAttribute> Validators { get; } | ||||
|         public ParameterValueProviderAttribute? ValueProvider { get; } | ||||
|         public bool Required { get; set; } | ||||
|         public bool IsHidden { get; } | ||||
|         public string PropertyName => Property.Name; | ||||
|  | ||||
|         public virtual bool WantRawValue => ParameterType.IsPairDeconstructable() | ||||
| @@ -30,7 +31,7 @@ namespace Spectre.Console.Cli | ||||
|             DefaultValueAttribute? defaultValue, | ||||
|             PairDeconstructorAttribute? deconstructor, | ||||
|             ParameterValueProviderAttribute? valueProvider, | ||||
|             IEnumerable<ParameterValidationAttribute> validators, bool required) | ||||
|             IEnumerable<ParameterValidationAttribute> validators, bool required, bool isHidden) | ||||
|         { | ||||
|             Id = Guid.NewGuid(); | ||||
|             ParameterType = parameterType; | ||||
| @@ -43,6 +44,7 @@ namespace Spectre.Console.Cli | ||||
|             ValueProvider = valueProvider; | ||||
|             Validators = new List<ParameterValidationAttribute>(validators ?? Array.Empty<ParameterValidationAttribute>()); | ||||
|             Required = required; | ||||
|             IsHidden = isHidden; | ||||
|         } | ||||
|  | ||||
|         public bool IsFlagValue() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tim Waalewijn
					Tim Waalewijn