diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/CSVCommands.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/CSVCommands.cs index 12a1fa15a4f..6b14a2cf29a 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/CSVCommands.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/CSVCommands.cs @@ -207,17 +207,7 @@ public SwitchParameter NoClobber /// [Parameter()] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { get; set; } = ClrFacade.GetDefaultEncoding(); @@ -591,17 +581,7 @@ public SwitchParameter UseCulture /// [Parameter()] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { get; set; } = ClrFacade.GetDefaultEncoding(); diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/format-hex/Format-Hex.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/format-hex/Format-Hex.cs index 42000ec5cad..5105c6280b2 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/format-hex/Format-Hex.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/format-hex/Format-Hex.cs @@ -50,17 +50,7 @@ public sealed class FormatHex : PSCmdlet /// [Parameter(ParameterSetName = "ByInputObject")] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { get; set; } = ClrFacade.GetDefaultEncoding(); diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/out-file/Out-File.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/out-file/Out-File.cs index 05ef11595da..f25e6e80de0 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/out-file/Out-File.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/FormatAndOutput/out-file/Out-File.cs @@ -72,17 +72,7 @@ public string LiteralPath /// [Parameter(Position = 1)] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { get; set; } = ClrFacade.GetDefaultEncoding(); diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ImplicitRemotingCommands.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ImplicitRemotingCommands.cs index 5dd06b479ed..422063f8d8d 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ImplicitRemotingCommands.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ImplicitRemotingCommands.cs @@ -77,17 +77,7 @@ public SwitchParameter Force /// [Parameter] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { get; set; } = ClrFacade.GetDefaultEncoding(); diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/MatchString.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/MatchString.cs index 12fdbbd73b2..2c57c95910c 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/MatchString.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/MatchString.cs @@ -1195,17 +1195,7 @@ public SwitchParameter AllMatches /// [Parameter] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { get; set; } = ClrFacade.GetDefaultEncoding(); diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs index 64fa3d1aace..e77c1b6df80 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/Send-MailMessage.cs @@ -60,17 +60,7 @@ public sealed class SendMailMessage : PSCmdlet [Parameter(ValueFromPipelineByPropertyName = true)] [Alias("BE")] [ValidateNotNullOrEmpty] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ArgumentToEncodingTransformationAttribute] public Encoding Encoding { get; set; } = Encoding.ASCII; diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/XmlCommands.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/XmlCommands.cs index a1c2f9d126a..1fa3f9befa5 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/XmlCommands.cs +++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/XmlCommands.cs @@ -107,17 +107,7 @@ public SwitchParameter NoClobber /// [Parameter] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { get; set; } = ClrFacade.GetDefaultEncoding(); diff --git a/src/System.Management.Automation/namespaces/FileSystemProvider.cs b/src/System.Management.Automation/namespaces/FileSystemProvider.cs index d8a2a9151d0..4c9308cd409 100644 --- a/src/System.Management.Automation/namespaces/FileSystemProvider.cs +++ b/src/System.Management.Automation/namespaces/FileSystemProvider.cs @@ -7212,17 +7212,7 @@ public class FileSystemContentDynamicParametersBase /// [Parameter] [ArgumentToEncodingTransformationAttribute()] - [ArgumentCompletions( - EncodingConversion.Ascii, - EncodingConversion.BigEndianUnicode, - EncodingConversion.OEM, - EncodingConversion.Unicode, - EncodingConversion.Utf7, - EncodingConversion.Utf8, - EncodingConversion.Utf8Bom, - EncodingConversion.Utf8NoBom, - EncodingConversion.Utf32 - )] + [ArgumentEncodingCompletionsAttribute] [ValidateNotNullOrEmpty] public Encoding Encoding { diff --git a/src/System.Management.Automation/utils/EncodingUtils.cs b/src/System.Management.Automation/utils/EncodingUtils.cs index 583d3282e17..e23e5506917 100644 --- a/src/System.Management.Automation/utils/EncodingUtils.cs +++ b/src/System.Management.Automation/utils/EncodingUtils.cs @@ -102,4 +102,22 @@ public override object Transform(EngineIntrinsics engineIntrinsics, object input } + /// + /// Provides the set of Encoding values for tab completion of an Encoding parameter. + /// + internal sealed class ArgumentEncodingCompletionsAttribute : ArgumentCompletionsAttribute + { + public ArgumentEncodingCompletionsAttribute() : base( + EncodingConversion.Ascii, + EncodingConversion.BigEndianUnicode, + EncodingConversion.OEM, + EncodingConversion.Unicode, + EncodingConversion.Utf7, + EncodingConversion.Utf8, + EncodingConversion.Utf8Bom, + EncodingConversion.Utf8NoBom, + EncodingConversion.Utf32 + ) + {} + } }