Tools/winget.ps1

# Companion for winget — defines Select-WingetPackage (wins) and Remove-WingetPackage (wrm)
# Dot-sourced by Register-DFTool when winget is registered.

function global:Select-WingetPackage {
    [CmdletBinding()]
    param([string]$Query = '')

    if (-not $Query) { $Query = Read-Host 'Search winget packages' }

    Invoke-DFPicker `
        -List          { winget search $Query 2>$null | Select-Object -Skip 2 | Where-Object { $_ -match '\S' } } `
        -PreviewWindow 'hidden' `
        -Header        'Select package to install [Enter to winget install]' `
        -Parse         { ($_ -split '\s{2,}')[1] } `
        -Action        {
            param($id)
            if ($id) {
                Write-Host "⚙ Installing $id…" -ForegroundColor Cyan
                winget install --id $id
            }
        }
}
Set-Alias -Name wins -Value Select-WingetPackage -Scope Global -Force

function global:Remove-WingetPackage {
    [CmdletBinding()]
    param()

    Invoke-DFPicker `
        -List          { winget list 2>$null | Select-Object -Skip 3 | Where-Object { $_ -match '\S' } } `
        -PreviewWindow 'hidden' `
        -Header        'Select package to uninstall [Enter to winget uninstall]' `
        -Parse         { ($_ -split '\s{2,}')[1] } `
        -Action        {
            param($id)
            if ($id) {
                Write-Host "⚙ Uninstalling $id…" -ForegroundColor DarkYellow
                winget uninstall --id $id
            }
        }
}
Set-Alias -Name wrm -Value Remove-WingetPackage -Scope Global -Force