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
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:
+13
-3
@@ -17,12 +17,15 @@ if not defined PS (
|
||||
)
|
||||
|
||||
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_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"
|
||||
if errorlevel 1 (
|
||||
del "%TMP_PS%" >nul 2>nul
|
||||
del "%TMP_BINDIR%" >nul 2>nul
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
@@ -30,9 +33,16 @@ if errorlevel 1 (
|
||||
set "RC=%ERRORLEVEL%"
|
||||
del "%TMP_PS%" >nul 2>nul
|
||||
|
||||
set "DOSH_CMD_PREFIX=%PREFIX%"
|
||||
if "%DOSH_CMD_PREFIX%"=="" set "DOSH_CMD_PREFIX=%USERPROFILE%\.local"
|
||||
set "DOSH_CMD_BINDIR=%DOSH_CMD_PREFIX%\bin"
|
||||
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%"
|
||||
if "%DOSH_CMD_PREFIX%"=="" set "DOSH_CMD_PREFIX=%USERPROFILE%\.local"
|
||||
set "DOSH_CMD_BINDIR=%DOSH_CMD_PREFIX%\bin"
|
||||
)
|
||||
set "DOSH_NEXT_PATH=%PATH%"
|
||||
if "%RC%"=="0" (
|
||||
echo ;%PATH%; | find /I ";%DOSH_CMD_BINDIR%;" >nul 2>nul
|
||||
|
||||
+5
-2
@@ -458,9 +458,12 @@ function Write-Utf8NoBom($Path, $Content) {
|
||||
[System.IO.File]::WriteAllText($Path, $Content, $encoding)
|
||||
}
|
||||
|
||||
$bindir = Join-Path $Prefix "bin"
|
||||
$configDir = Join-Path $HOME ".config\dosh"
|
||||
$bindir = Normalize-PathForCompare (Join-Path $Prefix "bin")
|
||||
$configDir = Normalize-PathForCompare (Join-Path $HOME ".config\dosh")
|
||||
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
|
||||
|
||||
function Install-Prebuilt {
|
||||
|
||||
@@ -257,9 +257,14 @@ fn windows_cmd_installer_wraps_native_powershell_installer() {
|
||||
assert!(cmd.contains("@echo off"));
|
||||
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("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("-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!(
|
||||
cmd.contains(
|
||||
"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");
|
||||
assert!(ps1.contains("function Add-UserPath($PathToAdd)"));
|
||||
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("foreach ($entry in ($PathValue -split ';' | Where-Object { $_ }))"));
|
||||
assert!(ps1.contains("$wanted = Normalize-PathForCompare $PathToAdd"));
|
||||
|
||||
Reference in New Issue
Block a user