X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=_webi%2Fwebi.ps1;h=dd7ac945b78b80e6ac91e11746d48057c7facf8c;hb=48f3faa49db499fb0194d329ea5b08e4d72cff61;hp=5bb6966e966c4504fafdc52b7ebb7486e46c8e65;hpb=3efbefdc677e5781bd4152a5ed089880f960b6cc;p=webi-installers%2F.git diff --git a/_webi/webi.ps1 b/_webi/webi.ps1 index 5bb6966..dd7ac94 100644 --- a/_webi/webi.ps1 +++ b/_webi/webi.ps1 @@ -1,13 +1,24 @@ #!/usr/bin/env pwsh +# this allows us to call ps1 files, which allows us to have spaces in filenames +# ('powershell "$Env:USERPROFILE\test.ps1" foo' will fail if it has a space in +# the path but '& "$Env:USERPROFILE\test.ps1" foo' will work even with a space) +Set-ExecutionPolicy -Scope Process Bypass + # If a command returns an error, halt the script. $ErrorActionPreference = 'Stop' # Ignore progress events from cmdlets so Invoke-WebRequest is not painfully slow $ProgressPreference = 'SilentlyContinue' -# TODO get arch -$Env:WEBI_UA = 'Windows/10 amd64' +# This is the canonical CPU arch when the process is emulated +$my_arch = "$Env:PROCESSOR_ARCHITEW6432" +IF ($my_arch -eq $null -or $my_arch -eq "") { + # This is the canonical CPU arch when the process is native + $my_arch = "$Env:PROCESSOR_ARCHITECTURE" +} +# TODO API should know to prefer x86 for windows when arm binary is not available +$Env:WEBI_UA = "Windows/10 $my_arch" $exename = $args[0] # Switch to userprofile @@ -18,7 +29,12 @@ if (!(Test-Path -Path .local\bin)) { New-Item -Path .local\bin -ItemType Directory } -Set-Content -Path .local\bin\webi.bat -Value "echo off`r`npushd %USERPROFILE%`r`npowershell -ExecutionPolicy Bypass .local\bin\webi.ps1 %1`r`npopd" +if (!(Test-Path -Path .local\xbin)) +{ + New-Item -Path .local\xbin -ItemType Directory +} +# See note on Set-ExecutionPolicy above +Set-Content -Path .local\bin\webi.bat -Value "@echo off`r`npushd %USERPROFILE%`r`npowershell -ExecutionPolicy Bypass .local\bin\webi.ps1 %1`r`npopd" if (!(Test-Path -Path .local\opt)) { New-Item -Path .local\opt -ItemType Directory @@ -44,17 +60,18 @@ if (!(Test-Path -Path .local\bin\pathman.exe)) } # Run pathman to set up the folder -#& "$Env:USERPROFILE\.local\bin\pathman.exe" add "$Env:USERPROFILE\.local\bin" -& "$Env:USERPROFILE\.local\bin\pathman.exe" add .local\bin +# (using unix style path because... cmd vs powershell vs whatever) +& "$Env:USERPROFILE\.local\bin\pathman.exe" add ~/.local/bin # {{ baseurl }} # {{ version }} # Fetch .ps1 # TODO detect formats -# Invoke-WebRequest -UserAgent "Windows amd64" "$Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,tar" -OutFile ".\.local\tmp\$exename.install.ps1" -echo "Downloading $Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,tar" -& curl.exe -fsSL -A "$Env:WEBI_UA" "$Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,tar" -o .\.local\tmp\$exename.install.ps1 +$PKG_URL = "$Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,exe,tar" +echo "Downloading $PKG_URL" +# Invoke-WebRequest -UserAgent "Windows amd64" "$PKG_URL" -OutFile ".\.local\tmp\$exename.install.ps1" +& curl.exe -fsSL -A "$Env:WEBI_UA" "$PKG_URL" -o .\.local\tmp\$exename.install.ps1 # Run .ps1 powershell .\.local\tmp\$exename.install.ps1