Skip to content

Commit f98f795

Browse files
Make parameters alias to be lists instead of strings (#722)
1 parent 404be3b commit f98f795

File tree

5 files changed

+33
-36
lines changed

5 files changed

+33
-36
lines changed

src/Common/YamlUtils.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Generic;
66
using System.Collections.Specialized;
77
using System.IO;
8+
using System.Linq;
89
using Microsoft.PowerShell.PlatyPS.Model;
910
using YamlDotNet.Serialization;
1011
using YamlDotNet.Serialization.NamingConventions;
@@ -360,7 +361,7 @@ private static List<Parameter> GetParametersFromDictionary(OrderedDictionary dic
360361
{
361362
p.VariableLength = result;
362363
}
363-
}
364+
}
364365

365366
if (pDictionary.TryGetValue("helpMessage", out object helpMsg))
366367
{
@@ -387,7 +388,7 @@ private static List<Parameter> GetParametersFromDictionary(OrderedDictionary dic
387388
{
388389
if (aliases is string aliasStr)
389390
{
390-
p.Aliases = aliasStr;
391+
p.Aliases = new List<string> { aliasStr };
391392
}
392393
else if (aliases is List<object> aliasList)
393394
{
@@ -396,7 +397,7 @@ private static List<Parameter> GetParametersFromDictionary(OrderedDictionary dic
396397
{
397398
aList.Add(alias.ToString());
398399
}
399-
p.Aliases = string.Join(", ", aList);
400+
p.Aliases = aList;
400401
}
401402
}
402403

@@ -526,7 +527,7 @@ private static List<InputOutput> GetInputsFromDictionary(OrderedDictionary dicti
526527
{
527528
inputs.Add(new InputOutput(name.ToString(), string.Empty));
528529
}
529-
}
530+
}
530531
}
531532
}
532533
}

src/Model/Parameter.cs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class Parameter : IEquatable<Parameter>
3535

3636
public bool IsDynamic { get; set ; }
3737

38-
public string Aliases { get; set;}
38+
public List<string> Aliases { get; set;}
3939

4040
public bool DontShow { get; set;}
4141

@@ -52,7 +52,7 @@ public Parameter()
5252
Description = string.Empty;
5353
ParameterSets = new();
5454
ParameterValue = new();
55-
Aliases = string.Empty;
55+
Aliases = new();
5656
AcceptedValues = new();
5757
DefaultValue = string.Empty;
5858
HelpMessage = string.Empty;
@@ -64,7 +64,7 @@ public Parameter(string name, string type)
6464
Type = type;
6565
ParameterSets = new();
6666
ParameterValue = new();
67-
Aliases = string.Empty;
67+
Aliases = new();
6868
AcceptedValues = new();
6969
DefaultValue = string.Empty;
7070
Description = string.Empty;
@@ -147,7 +147,7 @@ public Parameter(string name, string description, ParameterMetadataV2 metadata)
147147
VariableLength = metadata.VariableLength;
148148
DefaultValue = metadata.DefaultValue;
149149
SupportsWildcards = metadata.SupportsWildcards;
150-
Aliases = string.Join(",", metadata.Aliases);
150+
Aliases = metadata.Aliases;
151151
DontShow = metadata.DontShow;
152152
AcceptedValues = metadata.AcceptedValues;
153153
HelpMessage = metadata.HelpMessage;
@@ -201,16 +201,9 @@ public ParameterMetadataV2 GetMetadata()
201201
metadata.DefaultValue = DefaultValue;
202202
}
203203

204-
if (! string.IsNullOrEmpty(Aliases))
204+
if (Aliases is not null)
205205
{
206-
var aliases = Aliases?.Split(Constants.Comma, StringSplitOptions.RemoveEmptyEntries);
207-
if (aliases is not null)
208-
{
209-
foreach(var alias in aliases)
210-
{
211-
metadata.Aliases.Add(alias.Trim());
212-
}
213-
}
206+
metadata.Aliases = Aliases;
214207
}
215208

216209
if (ParameterValue is not null && ParameterValue.Count > 0)
@@ -248,7 +241,7 @@ public bool EqualsNoDescription(Parameter other)
248241
return (
249242
string.Compare(Name, other.Name, StringComparison.CurrentCulture) == 0 &&
250243
string.Compare(Type, other.Type, StringComparison.CurrentCulture) == 0 &&
251-
string.Compare(Aliases, other.Aliases, StringComparison.CurrentCulture) == 0 &&
244+
Aliases.SequenceEqual(other.Aliases, StringComparer.CurrentCulture) &&
252245
string.Compare(DefaultValue, other.DefaultValue, StringComparison.CurrentCulture) == 0 &&
253246
string.Compare(HelpMessage, other.HelpMessage, StringComparison.CurrentCulture) == 0 &&
254247
SupportsWildcards == other.SupportsWildcards &&
@@ -270,7 +263,7 @@ public bool Equals(Parameter other)
270263
string.Compare(Name, other.Name, StringComparison.CurrentCulture) == 0 &&
271264
string.Compare(Type, other.Type, StringComparison.CurrentCulture) == 0 &&
272265
string.Compare(Description, other.Description, StringComparison.CurrentCulture) == 0 &&
273-
string.Compare(Aliases, other.Aliases, StringComparison.CurrentCulture) == 0 &&
266+
Aliases.SequenceEqual(other.Aliases, StringComparer.CurrentCulture) &&
274267
string.Compare(DefaultValue, other.DefaultValue, StringComparison.CurrentCulture) == 0 &&
275268
string.Compare(HelpMessage, other.HelpMessage, StringComparison.CurrentCulture) == 0 &&
276269
SupportsWildcards == other.SupportsWildcards &&

src/Transform/TransformBase.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ protected IEnumerable<Parameter> GetParameters(CommandInfo cmdletInfo, dynamic?
217217
var paramAttribInfo = GetParameterAtributeInfo(parameterMetadata.Value.Attributes);
218218
string typeName = GetParameterTypeName(parameterMetadata.Value.ParameterType);
219219

220-
Parameter param = new(parameterMetadata.Value.Name, typeName);
220+
Parameter param = new(parameterMetadata.Value.Name, typeName);
221221
param.DontShow = paramAttribInfo.DontShow;
222222
param.SupportsWildcards = paramAttribInfo.Globbing;
223223
param.HelpMessage = paramAttribInfo.HelpMessage ?? string.Empty;
@@ -236,7 +236,7 @@ protected IEnumerable<Parameter> GetParameters(CommandInfo cmdletInfo, dynamic?
236236
}
237237

238238
param.DefaultValue = GetParameterDefaultValueFromHelp(helpItem, param.Name);
239-
param.Aliases = string.Join(",", parameterMetadata.Value.Aliases);
239+
param.Aliases = parameterMetadata.Value.Aliases.ToList();
240240

241241
string descriptionFromHelp = GetParameterDescriptionFromHelp(helpItem, param.Name) ?? param.HelpMessage ?? string.Empty;
242242
param.Description = string.IsNullOrEmpty(descriptionFromHelp) ?
@@ -620,7 +620,7 @@ protected Parameter GetParameterInfo(CommandInfo? cmdletInfo, dynamic? helpItem,
620620
string.Format(Constants.FillInParameterDescriptionTemplate, param.Name) :
621621
descriptionFromHelp;
622622

623-
param.Aliases = string.Join("-", paramInfo.Aliases);
623+
param.Aliases = paramInfo.Aliases.ToList();
624624
param.ParameterSets.ForEach(x => x.IsRequired = paramInfo.IsMandatory);
625625

626626
string defaultValueFromHelp = GetParameterDefaultValueFromHelp(helpItem, param.Name);

src/Transform/TransformMaml.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.IO;
99
using System.Linq;
1010
using System.Management.Automation;
11+
using System.Management.Automation.Language;
1112
using System.Text;
1213
using System.Xml;
1314

@@ -574,7 +575,7 @@ private Parameter ReadParameter(XmlReader reader, int parameterSetCount)
574575
parameter.ParameterSets.ForEach(x => x.IsRequired = required);
575576
parameter.VariableLength = variableLength;
576577
parameter.SupportsWildcards = globbing;
577-
parameter.Aliases = aliases ?? string.Empty;
578+
parameter.Aliases = aliases is not null ? new List<string> { aliases } : new List<string>();
578579

579580
// need to go the end of command:parameter
580581
if (reader.ReadState != ReadState.EndOfFile)

test/Pester/assets/get-date.yml

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ parameters:
421421
defaultValue: None
422422
supportsWildcards: false
423423
isDynamic: false
424-
aliases: ''
424+
aliases: []
425425
dontShow: false
426426
acceptedValues: []
427427
parameterSets:
@@ -449,7 +449,8 @@ parameters:
449449
defaultValue: None
450450
supportsWildcards: false
451451
isDynamic: false
452-
aliases: LastWriteTime
452+
aliases:
453+
- LastWriteTime
453454
dontShow: false
454455
acceptedValues: []
455456
parameterSets:
@@ -478,7 +479,7 @@ parameters:
478479
defaultValue: None
479480
supportsWildcards: false
480481
isDynamic: false
481-
aliases: ''
482+
aliases: []
482483
dontShow: false
483484
acceptedValues: []
484485
parameterSets:
@@ -501,7 +502,7 @@ parameters:
501502
defaultValue: None
502503
supportsWildcards: false
503504
isDynamic: false
504-
aliases: ''
505+
aliases: []
505506
dontShow: false
506507
acceptedValues:
507508
- Date
@@ -556,7 +557,7 @@ parameters:
556557
defaultValue: None
557558
supportsWildcards: false
558559
isDynamic: false
559-
aliases: ''
560+
aliases: []
560561
dontShow: false
561562
acceptedValues: []
562563
parameterSets:
@@ -579,7 +580,7 @@ parameters:
579580
defaultValue: None
580581
supportsWildcards: false
581582
isDynamic: false
582-
aliases: ''
583+
aliases: []
583584
dontShow: false
584585
acceptedValues: []
585586
parameterSets:
@@ -595,7 +596,7 @@ parameters:
595596
defaultValue: None
596597
supportsWildcards: false
597598
isDynamic: false
598-
aliases: ''
599+
aliases: []
599600
dontShow: false
600601
acceptedValues: []
601602
parameterSets:
@@ -607,7 +608,7 @@ parameters:
607608
defaultValue: None
608609
supportsWildcards: false
609610
isDynamic: false
610-
aliases: ''
611+
aliases: []
611612
dontShow: false
612613
acceptedValues: []
613614
parameterSets:
@@ -619,7 +620,7 @@ parameters:
619620
defaultValue: None
620621
supportsWildcards: false
621622
isDynamic: false
622-
aliases: ''
623+
aliases: []
623624
dontShow: false
624625
acceptedValues: []
625626
parameterSets:
@@ -631,7 +632,7 @@ parameters:
631632
defaultValue: None
632633
supportsWildcards: false
633634
isDynamic: false
634-
aliases: ''
635+
aliases: []
635636
dontShow: false
636637
acceptedValues: []
637638
parameterSets:
@@ -656,7 +657,7 @@ parameters:
656657
defaultValue: None
657658
supportsWildcards: false
658659
isDynamic: false
659-
aliases: ''
660+
aliases: []
660661
dontShow: false
661662
acceptedValues: []
662663
parameterSets:
@@ -683,7 +684,8 @@ parameters:
683684
defaultValue: None
684685
supportsWildcards: false
685686
isDynamic: false
686-
aliases: UnixTime
687+
aliases:
688+
- UnixTime
687689
dontShow: false
688690
acceptedValues: []
689691
parameterSets:
@@ -706,7 +708,7 @@ parameters:
706708
defaultValue: None
707709
supportsWildcards: false
708710
isDynamic: false
709-
aliases: ''
711+
aliases: []
710712
dontShow: false
711713
acceptedValues: []
712714
parameterSets:

0 commit comments

Comments
 (0)