Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mitchgollub/ebce195ab188c4f4b9f235229e7866e1 to your computer and use it in GitHub Desktop.
Save mitchgollub/ebce195ab188c4f4b9f235229e7866e1 to your computer and use it in GitHub Desktop.
net-core-appsettings-json-variable-replacement-in-appveyor
Write-Host "Environment Variable Substitution"
$variables = gci $env:$env:APPLICATION_PREFIX* | Select-Object -Property Key, Value
$configPath = "$env:APPLICATION_PATH\$env:CONFIG_FILE"
Write-Output "Loading config file from $configPath"
$appSettings = Get-Content -Raw $configPath | ConvertFrom-Json
foreach($variable in $variables) {
$matchString = $variable.Key.replace($env:APPLICATION_PREFIX, "")
$matchProperties = $matchString.Split(".")
if($matchProperties.Count -gt 1) {
$match = $appSettings.($matchProperties[0]).psobject.properties | where { $_.Name -eq $matchProperties[1] }
if ($match) {
$appSettings.($matchProperties[0]).($matchProperties[1]) = $variable.Value
}
else {
Write-Output "Could not find match for $matchString"
}
}
else {
$match = $appSettings.psobject.properties | where { $_.Name -eq $matchString }
if ($match) {
$appSettings.($matchString) = $variable.Value
}
else {
Write-Output "Could not find match for $matchString"
}
}
}
$appSettings | ConvertTo-Json -depth 100 | Out-File $configPath
@eivindivine
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment