Skip to content

Instantly share code, notes, and snippets.

@kkamegawa
Last active September 28, 2023 06:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kkamegawa/20f3538d55bc29c41956b0a230b066f9 to your computer and use it in GitHub Desktop.
Save kkamegawa/20f3538d55bc29c41956b0a230b066f9 to your computer and use it in GitHub Desktop.
update all installed dotnet cli tools. If version number includes "preview", update latest preview release
function Get-NugetApiEndpoint{
param(
[string]$nugetUri
)
$response = invoke-RestMethod -Uri $nugetUri -Method Get -ContentType "application/json"
$uri = $response.resources | Where-Object {$_.'@type' -eq 'SearchQueryService'} | Select-Object -ExpandProperty '@id' -First 1
return $uri
}
function get-latestdotnetpackage {
param (
[string]$queryHost,
[string]$packageName,
[string]$currentVersion
)
$prerelease = 'false'
if($currentVersion.Contains('-preview') -eq $true -or $currentVersion.Contains('-rc') -eq $true) {
$prerelease ='true'
}
$queryUri = $queryHost + "?q=$packageName&prerelease=$prerelease&semVerLevel=2.0.0"
$versions = Invoke-RestMethod $queryUri -Method Get -ContentType 'application/json'
if($versions.data[0].version -gt $currentVersion){
if($prerelease -eq 'true'){
$prereleaseFlag = "--prerelease"
}
dotnet.exe tool update $packageName --global $prereleaseFlag
}
}
function update-dotnettool {
$queryHost = Get-NugetApiEndpoint -nugetUri 'https://api.nuget.org/v3/index.json'
$lists = dotnet tool list --global | Select-Object -Skip 2
foreach($list in $lists)
{
$tool = $list.Split(' ') | Where-Object {[string]::IsNullOrWhiteSpace($_) -ne $true}
$packagename = $tool[0]
$version = $tool[1]
write-host "Checking $packagename version:$version"
get-latestdotnetpackage -queryHost $queryHost -packageName $packagename -currentVersion $version
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment