PowerShell / platyPS

Write PowerShell External Help in Markdown
MIT License
766 stars 149 forks source link

Should platyPS support/document Validation Sets? #560

Open SPMatthewMcD opened 2 years ago

SPMatthewMcD commented 2 years ago

I noticed in my latest build that Validation sets are not enumerated.

Should they be? I ended up adding the enumeration myself to the Region parameter here: https://github.com/SpanningCloudApps/SB365-Powershell/blob/master/docs/Get-SpanningAuthentication.md

Thanks

sdwheeler commented 2 years ago

PowerShell does not provide a way to discover the validations so there is no way for PlatyPS to do that.

You have to document the validations manually in the description of the parameter.

SPMatthewMcD commented 2 years ago

Thanks for the response.

SPMatthewMcD commented 2 years ago

@sdwheeler I just checked my Pester scripts and they have access to the Function Validation Sets. They are also mentioned in the 2.0 schema doc. platyPS.schema.md I started wading through the code but got lost. Not sure how the module is getting the Function information and what the difference is between PlatyPS and my Pester test. I load the module functions and then call: $Function.Parameters.{$paramName}.Attributes.validvalues to get the enumeration.

sdwheeler commented 2 years ago

Interesting and worth further research. There are several types of validation (range, enums, count, pattern, and script). So we would have to consider how to handle each type.

SPMatthewMcD commented 2 years ago

Understood, thanks. I'll try and dig in to see if I can contribute.

ThomasNieto commented 1 year ago

You can get the parameter attributes by using Get-Command. Here is an example getting the ValidValues property of the ValidateSetAttribute for the Get-Help -Category parameter.

(Get-Command Get-Help).Parameters['Category'].Attributes | ? { $_.GetType().Name -like "Validate*" } | select -ExpandProperty ValidValues

Alias
Cmdlet
Provider
General
FAQ
Glossary
HelpFile
ScriptCommand
Function
Filter
ExternalScript
All
DefaultHelp
DscResource
Class
Configuration

PlatyPS seems to handle Accepted values if its defined in the markdown help but I didn't find where it populates those values when building the markdown help.