55 lines
1.9 KiB
PowerShell
55 lines
1.9 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Shared helper — locate OpenSSL and add its bin dir to the session PATH.
|
|
Dot-source this at the top of any script that needs openssl:
|
|
. "$PSScriptRoot\_openssl.ps1"
|
|
#>
|
|
|
|
function Find-OpenSSL {
|
|
# 1. Already on PATH?
|
|
if (Get-Command openssl -ErrorAction SilentlyContinue) {
|
|
return (Get-Command openssl).Source
|
|
}
|
|
|
|
# 2. Probe well-known Windows install locations
|
|
$candidates = @(
|
|
"$env:ProgramFiles\OpenSSL-Win64\bin\openssl.exe"
|
|
"$env:ProgramFiles\OpenSSL\bin\openssl.exe"
|
|
"${env:ProgramFiles(x86)}\OpenSSL-Win32\bin\openssl.exe"
|
|
"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"
|
|
"C:\Program Files\OpenSSL\bin\openssl.exe"
|
|
"C:\tools\OpenSSL\bin\openssl.exe"
|
|
"$env:ChocolateyInstall\bin\openssl.exe"
|
|
"$env:ProgramFiles\Git\usr\bin\openssl.exe"
|
|
"$env:LocalAppData\Programs\Git\usr\bin\openssl.exe"
|
|
)
|
|
|
|
foreach ($candidate in $candidates) {
|
|
if (Test-Path $candidate) {
|
|
# Add the bin directory to the session PATH so subsequent
|
|
# `& openssl ...` calls work without a full path.
|
|
$binDir = Split-Path $candidate
|
|
$env:PATH = "$binDir;$env:PATH"
|
|
Write-Host "Found OpenSSL at: $candidate" -ForegroundColor Cyan
|
|
return $candidate
|
|
}
|
|
}
|
|
|
|
# 3. Nothing found — give actionable guidance
|
|
Write-Error @"
|
|
OpenSSL not found in PATH or any of the standard install locations.
|
|
|
|
If it is installed somewhere else, add its bin directory to your PATH:
|
|
`$env:PATH = 'C:\Path\To\OpenSSL\bin;' + `$env:PATH
|
|
|
|
Otherwise install it:
|
|
winget install ShiningLight.OpenSSL.Light
|
|
# — then restart this terminal —
|
|
"@
|
|
exit 1
|
|
}
|
|
|
|
# Run on dot-source — sets `$openssl` in the caller's scope
|
|
$openssl = Find-OpenSSL
|
|
Write-Host "OpenSSL ready: $(& $openssl version)" -ForegroundColor DarkGray
|