Classes/WingetManager.ps1

class WingetManager {
    [LibraryContext]$Context
    
    WingetManager([LibraryContext]$context) {
        $this.Context = $context
    }

    [void]Uninstall([string]$singleSoftware, [object]$softwareList) {
        if ($softwareList) {
            foreach ($softwareName in $softwareList) {
                $this.Uninstall($softwareName, $null)
            }
        }
        elseif($singleSoftware) {
            # Get list of installed packages that contain the name
            $installed = winget list --name $singleSoftware --accept-source-agreements | Select-String $singleSoftware

            if ($installed) {
                $this.Context.LogManager.Log("Attempting to uninstall software matching: $singleSoftware")
                winget uninstall $singleSoftware --silent --force --purge --disable-interactivity --accept-source-agreements
                $this.Context.LogManager.Log("Uninstall of $singleSoftware OK!")
            } else {
                $this.Context.LogManager.Log("Software '$singleSoftware' not found - skipping uninstall.", "WARN")
            }
        }
    }

    [void]Install([string]$singleSoftware, [object]$softwareList) {
        if ($softwareList) {
            foreach ($softwareName in $softwareList) {
                $this.Install($softwareName, $null)
            }
        }
        elseif($singleSoftware) {
            $this.Context.LogManager.Log("Attempting to install software matching: $singleSoftware")
            winget install --id=$singleSoftware -e --accept-source-agreements
            $this.Context.LogManager.Log("Install of $singleSoftware OK!")
        }
    }
}