Skip to content

Instantly share code, notes, and snippets.

@AngelMunoz
Created October 1, 2021 16:27
Show Gist options
  • Save AngelMunoz/2f12b5d5d343338a509a216868d2bc2e to your computer and use it in GitHub Desktop.
Save AngelMunoz/2f12b5d5d343338a509a216868d2bc2e to your computer and use it in GitHub Desktop.
Install Perla in windows machines
Param($version = "latest")
$baseUrl = "https://api.github.com";
$releasesUrl = "$baseUrl/repos/AngelMunoz/Perla/releases";
$releasesLatestUrl = "$releasesUrl/latest";
$releasesByTagUrl = "$releasesUrl/tags/v";
$outDir = "$Env:USERPROFILE\.perla";
$url = $version -eq "latest" ? $releasesLatestUrl : "$releasesBytagUrl$version";
Write-Host "Getting Release '$version' from - $url";
try {
$releaseData = Invoke-WebRequest $url -UserAgent "pwsh-req" -ContentType "application/vnd.github.v3+json" -ErrorAction Stop | ConvertFrom-Json
}
catch {
Write-Error "Error getting release data, please verify that a release (not pre-release) exists otherwise try using the exact version number (e.g ./install.ps1 -Version 0.11.0)";
exit 1;
}
$releaseName = "[$($releaseData.tag_name) - $($releaseData.name)]";
Write-Host "Found Release: $releaseName"
$downloadUrl = $releaseData.assets | Where-Object { $_.name -eq "win10-x64.zip" } | Select-Object -ExpandProperty browser_download_url;
Remove-Item $outDir -Force -Recurse -ErrorAction SilentlyContinue;
Write-Host "Creating $($Env:USERPROFILE)\.perla"
New-Item $outDir -ItemType Directory -Force | Out-Null
Write-Host "Downloading $releaseName from $downloadUrl"
try {
Invoke-WebRequest $downloadUrl -UserAgent "pwsh-req" -OutFile "$outDir\perla.zip" -ErrorAction Stop;
}
catch {
Write-Error "Error downloading: $($Error.Exception.Message)";
exit 1;
}
Expand-Archive "$outDir\perla.zip" $outDir -ErrorAction Stop;
Remove-Item "$outDir\perla.zip" -ErrorAction SilentlyContinue;
$fileContent = '
$Env:PERLA_HOME= "$perlahome";
$Env:PATH = "$Env:PERLA_HOME;$Env:PATH"'.Replace('$perlahome', $outDir);
Write-Host "Appending PERLA_HOME to your powershell profile"
Add-Content -Path $profile -Value $fileContent
Write-Host "We're done, please restart your powershell terminal to load your profile"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment