mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-02-14 17:49:53 +00:00
61 lines
1.6 KiB
PowerShell
61 lines
1.6 KiB
PowerShell
#!/usr/bin/env pwsh
|
|
|
|
####################
|
|
# Install prettier #
|
|
####################
|
|
|
|
function command-v-silent($cmdname) {
|
|
$my_cmd = Get-Command $command -ErrorAction SilentlyContinue
|
|
# $my_path = $my_cmd | Select-Object -ExpandProperty Definition
|
|
|
|
if ($my_cmd) {
|
|
return True
|
|
}
|
|
return False
|
|
}
|
|
|
|
function mktemp-d-t() {
|
|
# create random suffix for dirname
|
|
$my_bytes = New-Object byte[] 4
|
|
$my_rng = [Security.Cryptography.RNGCryptoServiceProvider]::Create()
|
|
$my_rng.GetBytes($bytes)
|
|
$my_hex_delimited = [BitConverter]::ToString($bytes)
|
|
$my_hex = $my_hex_delimited -replace "-", ""
|
|
|
|
# create random directory
|
|
$my_systmpdir = [System.IO.Path]::GetTempPath()
|
|
$my_tmpdir = Join-Path "$my_systmpdir" "$my_hex"
|
|
New-Item -ItemType Directory -Path "$my_tmpdir"
|
|
|
|
return "$my_tmpdir"
|
|
}
|
|
|
|
function npm-install-global($pkgname) {
|
|
# Fetch npm package manager
|
|
Write-Output "Checking for npm..."
|
|
if (-Not (command-v-silent("npm"))) {
|
|
& "$Env:USERPROFILE\.local\bin\webi-pwsh.ps1" node
|
|
}
|
|
|
|
if (command-v-silent($pkgname)) {
|
|
$my_cmd = Get-Command $pkgname
|
|
$my_cmd Select-Object -ExpandProperty Definition
|
|
Write-Host "Found '$my_cmd'"
|
|
return
|
|
}
|
|
|
|
$my_tmpdir = mktemp-d-t()
|
|
|
|
# npm install works best from a directory with no package.json
|
|
Push-Location "$my_tmpdir"
|
|
if (command-v-silent("npm")) {
|
|
& npm --location-golbal prettier
|
|
}
|
|
else {
|
|
& "$Env:USERPROFILE\.local\opt\node\npm" --location-golbal "$pkgname"
|
|
}
|
|
Pop-Location
|
|
}
|
|
|
|
npm-install-global prettier
|