Skip to content

Commit b6b4cb7

Browse files
Refactor GetCommandHandler to not use dynamic
1 parent 1ff55ec commit b6b4cb7

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/PowerShellEditorServices/Services/PowerShellContext/Handlers/GetCommandHandler.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,29 +48,38 @@ public async Task<List<PSCommandMessage>> Handle(GetCommandParams request, Cance
4848
PSCommand psCommand = new PSCommand();
4949

5050
// Executes the following:
51-
// Get-Command -CommandType Function,Cmdlet,ExternalScript | Select-Object -Property Name,ModuleName | Sort-Object -Property Name
51+
// Get-Command -CommandType Function,Cmdlet,ExternalScript | Sort-Object -Property Name
5252
psCommand
5353
.AddCommand("Microsoft.PowerShell.Core\\Get-Command")
5454
.AddParameter("CommandType", new[] { "Function", "Cmdlet", "ExternalScript" })
55-
.AddCommand("Microsoft.PowerShell.Utility\\Select-Object")
56-
.AddParameter("Property", new[] { "Name", "ModuleName" })
5755
.AddCommand("Microsoft.PowerShell.Utility\\Sort-Object")
5856
.AddParameter("Property", "Name");
5957

60-
IEnumerable<PSObject> result = await _powerShellContextService.ExecuteCommandAsync<PSObject>(psCommand).ConfigureAwait(false);
58+
IEnumerable<CommandInfo> result = await _powerShellContextService.ExecuteCommandAsync<CommandInfo>(psCommand).ConfigureAwait(false);
6159

6260
var commandList = new List<PSCommandMessage>();
6361
if (result != null)
6462
{
65-
foreach (dynamic command in result)
63+
foreach (CommandInfo command in result)
6664
{
65+
// Get the default ParameterSet
66+
string defaultParameterSet = null;
67+
foreach (CommandParameterSetInfo parameterSetInfo in command.ParameterSets)
68+
{
69+
if (parameterSetInfo.IsDefault)
70+
{
71+
defaultParameterSet = parameterSetInfo.Name;
72+
break;
73+
}
74+
}
75+
6776
commandList.Add(new PSCommandMessage
6877
{
6978
Name = command.Name,
7079
ModuleName = command.ModuleName,
7180
Parameters = command.Parameters,
7281
ParameterSets = command.ParameterSets,
73-
DefaultParameterSet = command.DefaultParameterSet
82+
DefaultParameterSet = defaultParameterSet
7483
});
7584
}
7685
}

test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,8 +1004,8 @@ await LanguageClient.SendRequest<EvaluateResponseBody>(
10041004
[Fact]
10051005
public async Task CanSendGetCommandRequest()
10061006
{
1007-
List<PSCommandMessage> pSCommandMessages =
1008-
await LanguageClient.SendRequest<List<PSCommandMessage>>("powerShell/getCommand", new GetCommandParams());
1007+
List<object> pSCommandMessages =
1008+
await LanguageClient.SendRequest<List<object>>("powerShell/getCommand", new GetCommandParams());
10091009

10101010
Assert.NotEmpty(pSCommandMessages);
10111011
// There should be at least 20 commands or so.

0 commit comments

Comments
 (0)