Skip to content

Commit 364fe79

Browse files
committed
Check StringList Type
1 parent 2a1e1d0 commit 364fe79

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/Automation/Create-ParameterTree.ps1

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ function New-ParameterTreeNode
3535
$node | Add-Member -Type NoteProperty -Name Parent -Value $Parent;
3636
$node | Add-Member -Type NoteProperty -Name IsListItem -Value $false;
3737
$node | Add-Member -Type NoteProperty -Name AllStrings -Value $false;
38+
$node | Add-Member -Type NoteProperty -Name OneStringList -Value $false;
3839
$node | Add-Member -Type NoteProperty -Name Properties -Value @();
3940
$node | Add-Member -Type NoteProperty -Name SubNodes -Value @();
4041

@@ -72,6 +73,10 @@ function Create-ParameterTreeImpl
7273
{
7374
$treeNode.AllStrings = $true;
7475
}
76+
elseif (Contains-OnlyStringList $TypeInfo)
77+
{
78+
$treeNode.OneStringList = $true;
79+
}
7580

7681
$padding = ($Depth.ToString() + (' ' * (4 * ($Depth + 1))));
7782
if ($Depth -gt 0)
@@ -83,6 +88,10 @@ function Create-ParameterTreeImpl
8388
{
8489
$annotation = " *";
8590
}
91+
elseif ($treeNode.OneStringList)
92+
{
93+
$annotation = " ^";
94+
}
8695

8796
Write-Verbose ($padding + "[ Node ] " + $treeNode.Name + $annotation);
8897
Write-Verbose ($padding + "[Parent] " + $Parent.Name);

src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/Automation/Generate-FunctionCommand.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ function Generate-CliFunctionCommandImpl
5656
$methodParamNameList = @();
5757
$methodParamTypeDict = @{};
5858
$allStringFieldCheck = @{};
59+
$oneStringListCheck = @{};
5960

6061
# 3. CLI Code
6162
# 3.1 Types
@@ -69,6 +70,8 @@ function Generate-CliFunctionCommandImpl
6970
$methodParamTypeDict.Add($paramItem.Name, $paramType);
7071
$allStringFields = Contains-OnlyStringFields $paramType;
7172
$allStringFieldCheck.Add($paramItem.Name, $allStringFields);
73+
$oneStringList = Contains-OnlyStringList $paramType;
74+
$oneStringListCheck.Add($paramItem.Name, $oneStringList);
7275

7376
if ($paramType.Namespace -like $ModelNameSpace)
7477
{

src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/Automation/ParameterTypeHelper.ps1

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,36 @@ function Contains-OnlyStringFields
3535
}
3636

3737
return $result;
38-
}
38+
}
39+
40+
function Contains-OnlyStringList
41+
{
42+
param(
43+
[Parameter(Mandatory = $True)]
44+
[System.Type]$parameterType
45+
)
46+
47+
if ($parameterType -eq $null)
48+
{
49+
return $false;
50+
}
51+
52+
if ($parameterType.GetProperties().Count -ne 1)
53+
{
54+
return $false;
55+
}
56+
else
57+
{
58+
[System.Reflection.PropertyInfo]$propInfoItem = ($parameterType.GetProperties())[0];
59+
if ($propInfoItem.PropertyType.FullName.StartsWith("System.Collections.Generic.IList"))
60+
{
61+
[System.Type]$itemType = $propInfoItem.PropertyType.GenericTypeArguments[0];
62+
if ($itemType.IsEquivalentTo([string]))
63+
{
64+
return $true;
65+
}
66+
}
67+
68+
return $false;
69+
}
70+
}

0 commit comments

Comments
 (0)