From dbef58c835fe87c5e8447b0be4ad55949d8c7455 Mon Sep 17 00:00:00 2001 From: Zach Trocinski Date: Thu, 22 Aug 2024 20:44:09 -0500 Subject: [PATCH 1/2] Initial commit with working map(string) check --- .../Config-Helpers/Write-TfvarsFile.ps1 | 52 +++++++++++++++++-- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 b/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 index ac53c116..2f187670 100644 --- a/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 +++ b/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 @@ -23,17 +23,61 @@ function Write-TfvarsFile { $configurationValue = "`"$($configurationValueRaw)`"" - if($configurationProperty.Value.DataType -eq "list(string)") { - if($configurationValueRaw -eq "") { + if ($configurationProperty.Value.DataType -eq "list(string)") { + if ($configurationValueRaw -eq "") { $configurationValue = "[]" } else { $split = $configurationValueRaw -split "," $join = $split -join "`",`"" $configurationValue = "[`"$join`"]" } + Write-Host "list(string) - Raw Value: $configurationValueRaw" } - if($configurationProperty.Value.DataType -eq "number" -or $configurationProperty.Value.DataType -eq "bool") { + if ($configurationProperty.Value.DataType -eq "map(string)") { + if (-not $configurationValueRaw -or $configurationValueRaw.Count -eq 0) { + $configurationValue = "{}" + } else { + $configurationValue = "{" + $entries = @() + + foreach ($key in $configurationValueRaw.Keys) { + $value = $configurationValueRaw[$key] + $entries += "`"$key`": `"$value`"" + } + + $configurationValue = $entries -join ", " + $configurationValue = "{ $configurationValue }" + } + Write-Host "map(string) - Processed Value: $configurationValue" + } + + if ($configurationProperty.Value.DataType -eq "list(object)") { + if ($configurationValueRaw -eq "") { + $configurationValue = "[]" + } elseif ($configurationValueRaw -eq "[]") { + $configurationValue = "[]" + } else { + $configurationValue = "[" + foreach ($entry in $configurationValueRaw) { + $configurationValue += "{ " + foreach ($keyValue in $entry.PSObject.Properties) { + $key = $keyValue.Name + $value = $keyValue.Value + $configurationValue += "`"$key`": `"$value`", " + } + $configurationValue = $configurationValue.TrimEnd(", ") + $configurationValue += "}, " + } + $configurationValue = $configurationValue.TrimEnd(", ") + $configurationValue += "]" + } + Write-Host "list(object) - Raw Value: $configurationValueRaw" + Write-Host "list(object) - Processed Value: $configurationValue" + } + + + if ($configurationProperty.Value.DataType -eq "number" -or $configurationProperty.Value.DataType -eq "bool") { $configurationValue = $configurationValueRaw } else { $configurationValue = $configurationValue.Replace("\", "\\") @@ -46,4 +90,4 @@ function Write-TfvarsFile { terraform -chdir="$tfvarsFolderPath" fmt | Out-String | Write-Verbose } -} \ No newline at end of file +} From f249ed8738c33249ddf29a9abcc9fa07d3e4b1d4 Mon Sep 17 00:00:00 2001 From: Zach Trocinski Date: Thu, 22 Aug 2024 21:35:05 -0500 Subject: [PATCH 2/2] Add logic for map of strings and list of objects --- .../Config-Helpers/Write-TfvarsFile.ps1 | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 b/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 index 2f187670..a9e86530 100644 --- a/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 +++ b/src/ALZ/Private/Config-Helpers/Write-TfvarsFile.ps1 @@ -17,26 +17,33 @@ function Write-TfvarsFile { foreach($configurationProperty in $configuration.PSObject.Properties) { $configurationValueRaw = $configurationProperty.Value.Value - if($configurationProperty.Value.Validator -eq "configuration_file_path") { + if ($configurationProperty.Value.Validator -eq "configuration_file_path") { $configurationValueRaw = [System.IO.Path]::GetFileName($configurationValueRaw) } $configurationValue = "`"$($configurationValueRaw)`"" if ($configurationProperty.Value.DataType -eq "list(string)") { - if ($configurationValueRaw -eq "") { - $configurationValue = "[]" + if (-not $configurationValueRaw -or $configurationValueRaw.Count -eq 0) { + if ($configurationProperty.Value.DefaultValue) { + $configurationValue = $configurationProperty.Value.DefaultValue + } else { + $configurationValue = "[]" + } } else { $split = $configurationValueRaw -split "," $join = $split -join "`",`"" $configurationValue = "[`"$join`"]" } - Write-Host "list(string) - Raw Value: $configurationValueRaw" } if ($configurationProperty.Value.DataType -eq "map(string)") { if (-not $configurationValueRaw -or $configurationValueRaw.Count -eq 0) { - $configurationValue = "{}" + if ($configurationProperty.Value.DefaultValue) { + $configurationValue = $configurationProperty.Value.DefaultValue + } else { + $configurationValue = "{}" + } } else { $configurationValue = "{" $entries = @() @@ -49,21 +56,21 @@ function Write-TfvarsFile { $configurationValue = $entries -join ", " $configurationValue = "{ $configurationValue }" } - Write-Host "map(string) - Processed Value: $configurationValue" } - if ($configurationProperty.Value.DataType -eq "list(object)") { - if ($configurationValueRaw -eq "") { - $configurationValue = "[]" - } elseif ($configurationValueRaw -eq "[]") { - $configurationValue = "[]" + if ($configurationProperty.Value.DataType -like "list(object*") { + if (-not $configurationValueRaw -or $configurationValueRaw.Count -eq 0) { + if ($configurationProperty.Value.DefaultValue) { + $configurationValue = $configurationProperty.Value.DefaultValue + } else { + $configurationValue = "[]" + } } else { $configurationValue = "[" foreach ($entry in $configurationValueRaw) { $configurationValue += "{ " - foreach ($keyValue in $entry.PSObject.Properties) { - $key = $keyValue.Name - $value = $keyValue.Value + foreach ($key in $entry.Keys) { + $value = $entry[$key] $configurationValue += "`"$key`": `"$value`", " } $configurationValue = $configurationValue.TrimEnd(", ") @@ -72,11 +79,8 @@ function Write-TfvarsFile { $configurationValue = $configurationValue.TrimEnd(", ") $configurationValue += "]" } - Write-Host "list(object) - Raw Value: $configurationValueRaw" - Write-Host "list(object) - Processed Value: $configurationValue" } - if ($configurationProperty.Value.DataType -eq "number" -or $configurationProperty.Value.DataType -eq "bool") { $configurationValue = $configurationValueRaw } else {