leaf-markdown-viewer 1.28.0

Terminal Markdown previewer with a GUI-like experience
$ErrorActionPreference = "Continue"

function Confirm-Action {
    param([string]$Prompt)
    $answer = Read-Host "$Prompt (y/N)"
    return ($answer -match '^(y|yes)$')
}

$cmd = Get-Command leaf -CommandType Application -ErrorAction SilentlyContinue
if (-not $cmd) {
    [Console]::Error.WriteLine("leaf not found in PATH. Nothing to uninstall.")
    exit 1
}
$bin = $cmd.Source

Write-Host "Uninstalling leaf ($bin)..."

& $bin --config remove

& $bin --auto-complete remove

if ($bin -match '\\scoop\\') {
    Write-Host "Detected Scoop installation."
    if (Confirm-Action "Run 'scoop uninstall leaf-markdown-viewer'?") {
        scoop uninstall leaf-markdown-viewer
    }
    exit 0
}
if ($bin -match '\\\.cargo\\bin\\') {
    Write-Host "Detected Cargo installation."
    if (Confirm-Action "Run 'cargo uninstall leaf-markdown-viewer'?") {
        cargo uninstall leaf-markdown-viewer
    }
    exit 0
}
if ($bin -match '\\pnpm\\') {
    Write-Host "Detected pnpm installation."
    if (Confirm-Action "Run 'pnpm uninstall -g @rivolink/leaf'?") {
        pnpm uninstall -g '@rivolink/leaf'
    }
    exit 0
}
if ($bin -match '\\\.yarn\\|\\Yarn\\') {
    Write-Host "Detected yarn installation."
    if (Confirm-Action "Run 'yarn global remove @rivolink/leaf'?") {
        yarn global remove '@rivolink/leaf'
    }
    exit 0
}
if ($bin -match '\\npm\\leaf\.(cmd|ps1)$') {
    Write-Host "Detected npm installation."
    if (Confirm-Action "Run 'npm uninstall -g @rivolink/leaf'?") {
        npm uninstall -g '@rivolink/leaf'
    }
    exit 0
}

if (-not (Confirm-Action "Remove binary $bin?")) {
    Write-Host "Binary removal cancelled."
    exit 0
}

Remove-Item -Path $bin -Force -ErrorAction SilentlyContinue

$installDir = Join-Path $env:LOCALAPPDATA "Programs\leaf"
if ((Split-Path -Parent $bin) -ieq $installDir -and (Test-Path $installDir)) {
    Remove-Item -Path $installDir -Recurse -Force -ErrorAction SilentlyContinue
    Write-Host "Install directory removed: $installDir"
}

if (Test-Path $bin) {
    [Console]::Error.WriteLine("Failed to remove $bin.")
    [Console]::Error.WriteLine("Close any running leaf process and retry.")
    exit 1
}

Write-Host "leaf binary removed: $bin"