Forked from MarkTiedemann/download-latest-release.ps1
Last active
November 8, 2023 07:12
-
-
Save f3l3gy/0e89dde158dde024959e36e915abf6bd to your computer and use it in GitHub Desktop.
Download latest GitHub release via Powershell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Download latest dotnet/codeformatter release from github | |
$repo = "dotnet/codeformatter" | |
$file = "CodeFormatter.zip" | |
$releases = "https://api.github.com/repos/$repo/releases" | |
Write-Host Determining latest release | |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 | |
$tag = (Invoke-WebRequest -Uri $releases -UseBasicParsing | ConvertFrom-Json)[0].tag_name | |
$download = "https://github.com/$repo/releases/download/$tag/$file" | |
$name = $file.Split(".")[0] | |
$zip = "$name-$tag.zip" | |
$dir = "$name-$tag" | |
Write-Host Dowloading latest release | |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 | |
Invoke-WebRequest $download -Out $zip | |
Write-Host Extracting release files | |
Expand-Archive $zip -Force | |
# Cleaning up target dir | |
Remove-Item $name -Recurse -Force -ErrorAction SilentlyContinue | |
# Moving from temp dir to target dir | |
Move-Item $dir\$name -Destination $name -Force | |
# Removing temp files | |
Remove-Item $zip -Force | |
Remove-Item $dir -Recurse -Force |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just a note for anyone looking at this for inspiration: I've found that another repository, posh-ssh, uses the "latest release" tag on github, which means you could potentially simplify part of this script using the url: https://github.com/darkoperator/Posh-SSH/releases/latest, for example. dotnet/codeformatter doesn't appear to do so, however.
Either way, this is a pretty neat script, thanks!
Edit: Here's an example: