fix(windows): switch to Install-WebiHostedScript to install scripts without PATH conflits between .bat and .ps1

This commit is contained in:
AJ ONeal
2023-11-10 17:23:42 -07:00
parent 941b84092e
commit 37d9644530
3 changed files with 80 additions and 36 deletions

View File

@@ -1,37 +1,43 @@
#!/usr/bin/env pwsh
#
# gpg-pubkey-id
#
$MY_CMD = "gpg-pubkey"
$MY_SUBCMD = "gpg-pubkey-id"
$ErrorActionPreference = 'stop'
& curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_HOST/packages/$MY_CMD/$MY_SUBCMD.ps1" -o "$Env:USERPROFILE\.local\bin\$MY_SUBCMD.ps1.part"
Remove-Item -Path "$Env:USERPROFILE\.local\bin\$MY_SUBCMD.ps1" -Recurse -ErrorAction Ignore
& Move-Item "$Env:USERPROFILE\.local\bin\$MY_SUBCMD.ps1.part" "$Env:USERPROFILE\.local\bin\$MY_SUBCMD.ps1"
Set-Content -Path "$Env:USERPROFILE\.local\bin\$MY_SUBCMD.bat" -Value "@echo off`r`npushd %USERPROFILE%`r`npowershell -ExecutionPolicy Bypass .local\bin\$MY_SUBCMD.ps1 %1`r`npopd"
function Install-WebiHostedScript () {
Param(
[string]$Package,
[string]$ScriptName
)
$PwshName = "_${ScriptName}.ps1"
$PwshUrl = "${Env:WEBI_HOST}/packages/${Package}/${ScriptName}.ps1"
$PwshPath = "$HOME\.local\bin\${PwshName}"
$OldPath = "$HOME\.local\bin\${ScriptName}.ps1"
#
# gpg-pubkey
#
$MY_CMD = "gpg-pubkey"
$BatPath = "$HOME\.local\bin\${ScriptName}.bat"
$PwshExec = "powershell -ExecutionPolicy Bypass"
$Bat = "@echo off`r`n$PwshExec %USERPROFILE%\.local\bin\${PwshName} %*"
& curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_HOST/packages/$MY_CMD/$MY_CMD.ps1" -o "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1.part"
Remove-Item -Path "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1" -Recurse -ErrorAction Ignore
& Move-Item "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1.part" "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1"
Set-Content -Path "$Env:USERPROFILE\.local\bin\$MY_CMD.bat" -Value "@echo off`r`npushd %USERPROFILE%`r`npowershell -ExecutionPolicy Bypass .local\bin\$MY_CMD.ps1 %1`r`npopd"
Invoke-DownloadUrl -Force -URL $PwshUrl -Path $PwshPath
Set-Content -Path $BatPath -Value $Bat
Write-Host " Created alias ${BatPath}"
Write-Host " to run ${PwshPath}"
# fix for old installs
Remove-Item -Path $OldPath -Force -ErrorAction Ignore
}
Install-WebiHostedScript -Package "gpg-pubkey" -ScriptName "gpg-pubkey-id"
Install-WebiHostedScript -Package "gpg-pubkey" -ScriptName "gpg-pubkey"
#
# Check the gpg exists
#
IF (-Not (Get-Command -Name "gpg" -ErrorAction SilentlyContinue)) {
& "${Env:USERPROFILE}\.local\bin\webi-pwsh.ps1" gpg
$Env:Path = [Environment]::GetEnvironmentVariable("Path", "User")
$gpg_exists = Get-Command gpg 2> $null
if (!$gpg_exists) {
curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_HOST/api/installers/gpg.ps1?formats=zip,exe,tar&libc=msvc" | powershell
$gpg_exists = Get-Command gpg 2> $null
if (!$gpg_exists) {
IF (-Not (Get-Command -Name "gpg" -ErrorAction SilentlyContinue)) {
Write-Output ""
Write-Output "(exited because gpg is not existalled)"
Write-Output "(exited because gpg is not installed)"
Write-Output ""
Exit 1
}
@@ -40,4 +46,4 @@ if (!$gpg_exists) {
#
# run gpg-pubkey
#
& "$Env:USERPROFILE\.local\bin\$MY_CMD.bat"
& "$Env:USERPROFILE\.local\bin\gpg-pubkey.bat"

View File

@@ -1,7 +1,28 @@
#!/usr/bin/env pwsh
& curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_HOST/packages/myip/myip.ps1" -o "$Env:USERPROFILE\.local\bin\myip.ps1.part"
Remove-Item -Path "$Env:USERPROFILE\.local\bin\myip.ps1" -Recurse -ErrorAction Ignore
& Move-Item "$Env:USERPROFILE\.local\bin\myip.ps1.part" "$Env:USERPROFILE\.local\bin\myip.ps1"
Set-Content -Path "$Env:USERPROFILE\.local\bin\myip.bat" -Value "@echo off`r`npushd %USERPROFILE%`r`npowershell -ExecutionPolicy Bypass .local\bin\myip.ps1 %1`r`npopd"
& "$Env:USERPROFILE\.local\bin\myip.bat"
$ErrorActionPreference = 'stop'
function Install-WebiHostedScript () {
Param(
[string]$Package,
[string]$ScriptName
)
$PwshName = "_${ScriptName}.ps1"
$PwshUrl = "${Env:WEBI_HOST}/packages/${Package}/${ScriptName}.ps1"
$PwshPath = "$HOME\.local\bin\${PwshName}"
$OldPath = "$HOME\.local\bin\${ScriptName}.ps1"
$BatPath = "$HOME\.local\bin\${ScriptName}.bat"
$PwshExec = "powershell -ExecutionPolicy Bypass"
$Bat = "@echo off`r`n$PwshExec %USERPROFILE%\.local\bin\${PwshName} %*"
Invoke-DownloadUrl -Force -URL $PwshUrl -Path $PwshPath
Set-Content -Path $BatPath -Value $Bat
Write-Host " Created alias ${BatPath}"
Write-Host " to run ${PwshPath}"
# fix for old installs
Remove-Item -Path $OldPath -Force -ErrorAction Ignore
}
Install-WebiHostedScript -Package "myip" -ScriptName "myip"

View File

@@ -1,11 +1,28 @@
#!/usr/bin/env pwsh
$MY_CMD = "ssh-pubkey"
$ErrorActionPreference = 'stop'
& curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_HOST/packages/$MY_CMD/$MY_CMD.ps1" -o "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1.part"
Remove-Item -Path "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1" -Recurse -ErrorAction Ignore
& Move-Item "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1.part" "$Env:USERPROFILE\.local\bin\$MY_CMD.ps1"
Set-Content -Path "$Env:USERPROFILE\.local\bin\$MY_CMD.bat" -Value "@echo off`r`npushd %USERPROFILE%`r`npowershell -ExecutionPolicy Bypass .local\bin\$MY_CMD.ps1 %1`r`npopd"
function Install-WebiHostedScript () {
Param(
[string]$Package,
[string]$ScriptName
)
$PwshName = "_${ScriptName}.ps1"
$PwshUrl = "${Env:WEBI_HOST}/packages/${Package}/${ScriptName}.ps1"
$PwshPath = "$HOME\.local\bin\${PwshName}"
$OldPath = "$HOME\.local\bin\${ScriptName}.ps1"
# run the command
& "$Env:USERPROFILE\.local\bin\$MY_CMD.bat"
$BatPath = "$HOME\.local\bin\${ScriptName}.bat"
$PwshExec = "powershell -ExecutionPolicy Bypass"
$Bat = "@echo off`r`n$PwshExec %USERPROFILE%\.local\bin\${PwshName} %*"
Invoke-DownloadUrl -Force -URL $PwshUrl -Path $PwshPath
Set-Content -Path $BatPath -Value $Bat
Write-Host " Created alias ${BatPath}"
Write-Host " to run ${PwshPath}"
# fix for old installs
Remove-Item -Path $OldPath -Force -ErrorAction Ignore
}
Install-WebiHostedScript -Package "ssh-pubkey" -ScriptName "ssh-pubkey"