Replaced all instances of webi.ps1 with webi-pwsh.ps1
[webi-installers/.git] / _webi / webi.ps1
index 7d8de291ee643c0a19da0cef62292933ec275c23..73f30982aaeb299e0de83dff96c2c9b118f8d5ac 100644 (file)
@@ -1,36 +1,44 @@
 #!/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
 pushd $Env:USERPROFILE
 
 # Make paths if needed
-if (!(Test-Path -Path .local\bin))
-{
-    New-Item -Path .local\bin -ItemType Directory
-}
-if (!(Test-Path -Path .local\xbin))
-{
-    New-Item -Path .local\xbin -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"
+New-Item -Path .local\bin -ItemType Directory -Force
+# TODO replace all xbin with opt\bin\
+New-Item -Path .local\xbin -ItemType Directory -Force
+
+# 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-pwsh.ps1 %1`r`npopd"
 if (!(Test-Path -Path .local\opt))
 {
-    New-Item -Path .local\opt -ItemType Directory
+    New-Item -Path .local\opt -ItemType Directory -Force
 }
 # TODO windows version of mktemp -d
 if (!(Test-Path -Path .local\tmp))
 {
-    New-Item -Path .local\tmp -ItemType Directory
+    New-Item -Path .local\tmp -ItemType Directory -Force
 }
 
 # TODO SetStrictMode
@@ -48,8 +56,8 @@ 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 }}