Use resolved bindir in cmd installer PATH
ci / test (push) Canceled after 0s
ci / fuzz-smoke (push) Canceled after 0s
ci / macos-client (macos-aarch64, macos-14) (push) Canceled after 0s
ci / macos-client (macos-x86_64, macos-13) (push) Canceled after 0s
ci / windows-client (push) Canceled after 0s
ci / package-release (linux-x86_64, ubuntu-latest, , , ) (push) Canceled after 0s
ci / package-release (macos-aarch64, macos-14, , , ) (push) Canceled after 0s
ci / package-release (macos-x86_64, macos-13, , , ) (push) Canceled after 0s
ci / package-release (windows-aarch64, windows-latest, aarch64, windows, aarch64-pc-windows-msvc) (push) Canceled after 0s
ci / package-release (windows-x86_64, windows-latest, , , ) (push) Canceled after 0s
ci / remote-bench (push) Canceled after 0s
ci / publish-gitea-release (push) Canceled after 0s

This commit is contained in:
DuProcess
2026-07-16 22:50:39 -04:00
parent 4ce1aa4e6d
commit 294014e93f
3 changed files with 27 additions and 6 deletions
+10
View File
@@ -17,12 +17,15 @@ if not defined PS (
) )
set "TMP_PS=%TEMP%\dosh-install-%RANDOM%-%RANDOM%.ps1" set "TMP_PS=%TEMP%\dosh-install-%RANDOM%-%RANDOM%.ps1"
set "TMP_BINDIR=%TEMP%\dosh-install-%RANDOM%-%RANDOM%.bindir"
set "DOSH_INSTALL_PS1_URL=%SCRIPT_URL%" set "DOSH_INSTALL_PS1_URL=%SCRIPT_URL%"
set "DOSH_INSTALL_PS1_PATH=%TMP_PS%" set "DOSH_INSTALL_PS1_PATH=%TMP_PS%"
set "DOSH_INSTALL_BINDIR_FILE=%TMP_BINDIR%"
"%PS%" -NoProfile -ExecutionPolicy Bypass -Command "$ErrorActionPreference='Stop'; $ProgressPreference='SilentlyContinue'; Invoke-WebRequest -UseBasicParsing -Uri $env:DOSH_INSTALL_PS1_URL -OutFile $env:DOSH_INSTALL_PS1_PATH" "%PS%" -NoProfile -ExecutionPolicy Bypass -Command "$ErrorActionPreference='Stop'; $ProgressPreference='SilentlyContinue'; Invoke-WebRequest -UseBasicParsing -Uri $env:DOSH_INSTALL_PS1_URL -OutFile $env:DOSH_INSTALL_PS1_PATH"
if errorlevel 1 ( if errorlevel 1 (
del "%TMP_PS%" >nul 2>nul del "%TMP_PS%" >nul 2>nul
del "%TMP_BINDIR%" >nul 2>nul
exit /b 1 exit /b 1
) )
@@ -30,9 +33,16 @@ if errorlevel 1 (
set "RC=%ERRORLEVEL%" set "RC=%ERRORLEVEL%"
del "%TMP_PS%" >nul 2>nul del "%TMP_PS%" >nul 2>nul
if "%RC%"=="0" if exist "%TMP_BINDIR%" (
for /f "usebackq delims=" %%D in ("%TMP_BINDIR%") do if not defined DOSH_CMD_BINDIR set "DOSH_CMD_BINDIR=%%D"
)
del "%TMP_BINDIR%" >nul 2>nul
if not defined DOSH_CMD_BINDIR (
set "DOSH_CMD_PREFIX=%PREFIX%" set "DOSH_CMD_PREFIX=%PREFIX%"
if "%DOSH_CMD_PREFIX%"=="" set "DOSH_CMD_PREFIX=%USERPROFILE%\.local" if "%DOSH_CMD_PREFIX%"=="" set "DOSH_CMD_PREFIX=%USERPROFILE%\.local"
set "DOSH_CMD_BINDIR=%DOSH_CMD_PREFIX%\bin" set "DOSH_CMD_BINDIR=%DOSH_CMD_PREFIX%\bin"
)
set "DOSH_NEXT_PATH=%PATH%" set "DOSH_NEXT_PATH=%PATH%"
if "%RC%"=="0" ( if "%RC%"=="0" (
echo ;%PATH%; | find /I ";%DOSH_CMD_BINDIR%;" >nul 2>nul echo ;%PATH%; | find /I ";%DOSH_CMD_BINDIR%;" >nul 2>nul
+5 -2
View File
@@ -458,9 +458,12 @@ function Write-Utf8NoBom($Path, $Content) {
[System.IO.File]::WriteAllText($Path, $Content, $encoding) [System.IO.File]::WriteAllText($Path, $Content, $encoding)
} }
$bindir = Join-Path $Prefix "bin" $bindir = Normalize-PathForCompare (Join-Path $Prefix "bin")
$configDir = Join-Path $HOME ".config\dosh" $configDir = Normalize-PathForCompare (Join-Path $HOME ".config\dosh")
New-Item -ItemType Directory -Force -Path $bindir, $configDir | Out-Null New-Item -ItemType Directory -Force -Path $bindir, $configDir | Out-Null
if ($env:DOSH_INSTALL_BINDIR_FILE) {
Write-Utf8NoBom $env:DOSH_INSTALL_BINDIR_FILE $bindir
}
Apply-PendingBinaryReplacements $bindir Apply-PendingBinaryReplacements $bindir
function Install-Prebuilt { function Install-Prebuilt {
+9 -1
View File
@@ -257,9 +257,14 @@ fn windows_cmd_installer_wraps_native_powershell_installer() {
assert!(cmd.contains("@echo off")); assert!(cmd.contains("@echo off"));
assert!(cmd.contains("https://git.palav.dev/Palav/dosh/raw/branch/main/install.ps1")); assert!(cmd.contains("https://git.palav.dev/Palav/dosh/raw/branch/main/install.ps1"));
assert!(cmd.contains("for %%P in (powershell.exe pwsh.exe powershell pwsh) do")); assert!(cmd.contains("for %%P in (powershell.exe pwsh.exe powershell pwsh) do"));
assert!(cmd.contains("set \"TMP_BINDIR=%TEMP%\\dosh-install-%RANDOM%-%RANDOM%.bindir\""));
assert!(cmd.contains("set \"DOSH_INSTALL_BINDIR_FILE=%TMP_BINDIR%\""));
assert!(cmd.contains("Invoke-WebRequest -UseBasicParsing")); assert!(cmd.contains("Invoke-WebRequest -UseBasicParsing"));
assert!(cmd.contains("-ExecutionPolicy Bypass -File \"%TMP_PS%\" %*")); assert!(cmd.contains("-ExecutionPolicy Bypass -File \"%TMP_PS%\" %*"));
assert!(cmd.contains("set \"DOSH_CMD_PREFIX=%PREFIX%\"")); assert!(cmd.contains(
"for /f \"usebackq delims=\" %%D in (\"%TMP_BINDIR%\") do if not defined DOSH_CMD_BINDIR set \"DOSH_CMD_BINDIR=%%D\""
));
assert!(cmd.contains("if not defined DOSH_CMD_BINDIR ("));
assert!( assert!(
cmd.contains( cmd.contains(
"if \"%DOSH_CMD_PREFIX%\"==\"\" set \"DOSH_CMD_PREFIX=%USERPROFILE%\\.local\"" "if \"%DOSH_CMD_PREFIX%\"==\"\" set \"DOSH_CMD_PREFIX=%USERPROFILE%\\.local\""
@@ -363,6 +368,9 @@ fn windows_installer_adds_user_path_idempotently() {
let ps1 = include_str!("../install.ps1"); let ps1 = include_str!("../install.ps1");
assert!(ps1.contains("function Add-UserPath($PathToAdd)")); assert!(ps1.contains("function Add-UserPath($PathToAdd)"));
assert!(ps1.contains("function PathList-Contains($PathValue, $PathToFind)")); assert!(ps1.contains("function PathList-Contains($PathValue, $PathToFind)"));
assert!(ps1.contains("$bindir = Normalize-PathForCompare (Join-Path $Prefix \"bin\")"));
assert!(ps1.contains("if ($env:DOSH_INSTALL_BINDIR_FILE)"));
assert!(ps1.contains("Write-Utf8NoBom $env:DOSH_INSTALL_BINDIR_FILE $bindir"));
assert!(ps1.contains("$wanted = Normalize-PathForCompare $PathToFind")); assert!(ps1.contains("$wanted = Normalize-PathForCompare $PathToFind"));
assert!(ps1.contains("foreach ($entry in ($PathValue -split ';' | Where-Object { $_ }))")); assert!(ps1.contains("foreach ($entry in ($PathValue -split ';' | Where-Object { $_ }))"));
assert!(ps1.contains("$wanted = Normalize-PathForCompare $PathToAdd")); assert!(ps1.contains("$wanted = Normalize-PathForCompare $PathToAdd"));