Private/Config-Helpers/Convert-ParametersToInputConfig.ps1
|
function Convert-ParametersToInputConfig { param( [Parameter(Mandatory = $false)] [PSCustomObject] $inputConfig, [Parameter(Mandatory = $false)] [hashtable] $parameters ) foreach ($parameterKey in $parameters.Keys) { $parameter = $parameters[$parameterKey] # Create a safe copy of the parameter for logging $safeParameter = $parameter.PSObject.Copy() # Check if this parameter contains sensitive information and mask it $isSensitive = $false foreach ($sensitivePattern in @('github_token', 'githubToken', 'token', 'password', 'secret', 'key', 'credential', 'auth')) { if ($parameterKey -like "*$sensitivePattern*") { $isSensitive = $true break } } if ($isSensitive -and $null -ne $safeParameter.value -and $safeParameter.value -ne "") { $safeParameter.value = "***MASKED***" } Write-Verbose "Processing parameter $parameterKey $(ConvertTo-Json $safeParameter -Depth 100)" foreach ($parameterAlias in $parameter.aliases) { if ($inputConfig.PsObject.Properties.Name -contains $parameterAlias) { Write-Verbose "Alias $parameterAlias exists in input config, renaming..." $configItem = $inputConfig.PSObject.Properties | Where-Object { $_.Name -eq $parameterAlias } $inputConfig | Add-Member -NotePropertyName $parameterKey -NotePropertyValue @{ Value = $configItem.Value.Value Source = $configItem.Value.Source } $inputConfig.PSObject.Properties.Remove($configItem.Name) continue } } if ($inputConfig.PsObject.Properties.Name -notcontains $parameterKey) { $variableValue = [Environment]::GetEnvironmentVariable("ALZ_$($parameterKey)") if ($null -eq $variableValue) { if ($parameter.type -eq "SwitchParameter") { $variableValue = $parameter.value.IsPresent } else { $variableValue = $parameter.value } } if ($parameter.type -eq "SwitchParameter") { $variableValue = [bool]::Parse($variableValue) } # Use safe logging to prevent sensitive data exposure $maskedValue = $variableValue foreach ($sensitivePattern in @('github_token', 'githubToken', 'token', 'password', 'secret', 'key', 'credential', 'auth')) { if ($parameterKey -like "*$sensitivePattern*" -and $null -ne $variableValue -and $variableValue -ne "") { $maskedValue = "***MASKED***" break } } Write-Verbose "Adding parameter $parameterKey with value $maskedValue" $inputConfig | Add-Member -NotePropertyName $parameterKey -NotePropertyValue @{ Value = $variableValue Source = "parameter" } } } return $inputConfig } |