From 49846f6ca30afa813fe6f14509f51a091a4a6a6b Mon Sep 17 00:00:00 2001 From: ThreeFive-O Date: Fri, 7 Sep 2018 10:05:52 +0200 Subject: [PATCH 1/3] Add unified attribute for completion for Encoding parameter. --- .../commands/utility/CSVCommands.cs | 24 ++----------------- .../FormatAndOutput/format-hex/Format-Hex.cs | 12 +--------- .../FormatAndOutput/out-file/Out-File.cs | 12 +--------- .../utility/ImplicitRemotingCommands.cs | 12 +--------- .../commands/utility/MatchString.cs | 12 +--------- .../commands/utility/Send-MailMessage.cs | 12 +--------- .../commands/utility/XmlCommands.cs | 12 +--------- .../namespaces/FileSystemProvider.cs | 12 +--------- .../utils/EncodingUtils.cs | 19 +++++++++++++++ 9 files changed, 28 insertions(+), 99 deletions(-) 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..ee99f06e801 100644 --- a/src/System.Management.Automation/utils/EncodingUtils.cs +++ b/src/System.Management.Automation/utils/EncodingUtils.cs @@ -102,4 +102,23 @@ public override object Transform(EngineIntrinsics engineIntrinsics, object input } + /// + /// To make it easier to complete the possible values for the -Encoding parameter, we add an + /// unified ArgumentCompletionsAttribute here. This also solves the problem of code duplication. + /// + 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 + ) + {} + } } From 807d8bc08576ff2a74787932096f7ceb3f4b5780 Mon Sep 17 00:00:00 2001 From: ThreeFive-O Date: Fri, 7 Sep 2018 11:43:17 +0200 Subject: [PATCH 2/3] Better summary comment for ArgumentEncodingCompletionsAttribute --- src/System.Management.Automation/utils/EncodingUtils.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/System.Management.Automation/utils/EncodingUtils.cs b/src/System.Management.Automation/utils/EncodingUtils.cs index ee99f06e801..1689efd3d6e 100644 --- a/src/System.Management.Automation/utils/EncodingUtils.cs +++ b/src/System.Management.Automation/utils/EncodingUtils.cs @@ -103,8 +103,7 @@ public override object Transform(EngineIntrinsics engineIntrinsics, object input } /// - /// To make it easier to complete the possible values for the -Encoding parameter, we add an - /// unified ArgumentCompletionsAttribute here. This also solves the problem of code duplication. + /// Allows to complete for the possible values of the -Encoding parameter. /// internal sealed class ArgumentEncodingCompletionsAttribute : ArgumentCompletionsAttribute { From f44d776a0d58c3ed79394b2c057471efe6f65be0 Mon Sep 17 00:00:00 2001 From: ThreeFive-O Date: Fri, 7 Sep 2018 19:59:31 +0200 Subject: [PATCH 3/3] Change summary comment for ArgumentEncodingCompletionsAttribute --- src/System.Management.Automation/utils/EncodingUtils.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Management.Automation/utils/EncodingUtils.cs b/src/System.Management.Automation/utils/EncodingUtils.cs index 1689efd3d6e..e23e5506917 100644 --- a/src/System.Management.Automation/utils/EncodingUtils.cs +++ b/src/System.Management.Automation/utils/EncodingUtils.cs @@ -103,7 +103,7 @@ public override object Transform(EngineIntrinsics engineIntrinsics, object input } /// - /// Allows to complete for the possible values of the -Encoding parameter. + /// Provides the set of Encoding values for tab completion of an Encoding parameter. /// internal sealed class ArgumentEncodingCompletionsAttribute : ArgumentCompletionsAttribute {