ci: use JSON to transfer environment variables
The `set` command in `cmd` has terrible properties in that there's no real structure to it. Sensitive sequences in values or variable names that are escaping sequences can be interpreted at the wrong time or things like newlines in values are not escaped at all and cause ambiguities in parsing. Avoid all of that and use PowerShell to use JSON as a communication mechanism.
This commit is contained in:
parent
641976a36b
commit
c1ddff67f2
@ -1,9 +1,7 @@
|
||||
$erroractionpreference = "stop"
|
||||
|
||||
cmd /c "`"$env:VCVARSALL`" $env:VCVARSPLATFORM -vcvars_ver=$env:VCVARSVERSION & set" |
|
||||
foreach {
|
||||
if ($_ -match "=") {
|
||||
$v = $_.split("=")
|
||||
[Environment]::SetEnvironmentVariable($v[0], $v[1])
|
||||
}
|
||||
$all_env = cmd /c "`"$env:VCVARSALL`" $env:VCVARSPLATFORM -vcvars_ver=$env:VCVARSVERSION >NUL & powershell -Command `"Get-ChildItem env: | Select-Object -Property Key,Value | ConvertTo-Json`"" | ConvertFrom-Json
|
||||
|
||||
foreach ($envvar in $all_env) {
|
||||
[Environment]::SetEnvironmentVariable($envvar.Key, $envvar.Value)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user