updateUIDefinition.ps1 (27 lines of code) (raw):

param ( [string]$releasesUrl ) $templateFile = 'createUiDefinition.json' Write-Host "Updating $templateFile file" . ./newtonjson.ps1 $json = Invoke-WebRequest $releasesUrl | ConvertFrom-Json # Select last two major releases $groups = $json.TC | Group-Object -Property majorVersion | Select-Object -First 2 $versions = New-Object System.Collections.ArrayList foreach($group in $groups) { foreach($release in $group.Group) { $versions.add($release.version) > $null } } Write-Host "Will set the following versions: $versions" $template = [Newtonsoft.Json.JsonConvert]::DeserializeObject((Get-Content $templateFile -Raw), [Newtonsoft.Json.Linq.JObject]) $template.parameters.basics[2].defaultValue = $versions[0] $template.parameters.basics[2].constraints.allowedValues.clear() foreach($version in $versions) { $jo = New-Object -TypeName Newtonsoft.Json.Linq.JObject $jo.label = $version $jo.value = $version $template.parameters.basics[2].constraints.allowedValues.add($jo) } [Newtonsoft.Json.JsonConvert]::SerializeObject($template, [Newtonsoft.Json.Formatting]::Indented) | Set-Content $templateFile Write-Host "$templateFile file was updated"