functions/public/Get-KlippyPrinter.ps1

function Get-KlippyPrinter {
    <#
    .SYNOPSIS
        Gets registered Klipper printers from the local registry.

    .DESCRIPTION
        Retrieves printer configurations from the KlippyCLI registry.
        Can retrieve all printers, a specific printer by Id or name, or the default printer.

    .PARAMETER Id
        The unique identifier (GUID) of the printer to retrieve.

    .PARAMETER PrinterName
        The friendly name of the printer to retrieve.

    .PARAMETER Default
        Return only the default printer.

    .EXAMPLE
        Get-KlippyPrinter
        Returns all registered printers.

    .EXAMPLE
        Get-KlippyPrinter -PrinterName "MyPrinter"
        Returns the printer named "MyPrinter".

    .EXAMPLE
        Get-KlippyPrinter -Default
        Returns the default printer.

    .OUTPUTS
        PSCustomObject[] - Array of printer objects, or a single printer object.
    #>

    [CmdletBinding(DefaultParameterSetName = 'All')]
    [OutputType([PSCustomObject[]])]
    param(
        [Parameter(Mandatory = $true, ParameterSetName = 'ById')]
        [ValidateNotNullOrEmpty()]
        [string]$Id,

        [Parameter(Mandatory = $true, ParameterSetName = 'ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$PrinterName,

        [Parameter(Mandatory = $true, ParameterSetName = 'Default')]
        [switch]$Default
    )

    $printers = Read-KlippyPrinterRegistry

    switch ($PSCmdlet.ParameterSetName) {
        'All' {
            return $printers
        }

        'ById' {
            $printer = $printers | Where-Object { $_.Id -eq $Id }
            if (-not $printer) {
                Write-Error "Printer with Id '$Id' not found."
                return
            }
            return $printer
        }

        'ByName' {
            $printer = $printers | Where-Object { $_.PrinterName -ieq $PrinterName }
            if (-not $printer) {
                Write-Error "Printer with name '$PrinterName' not found."
                return
            }
            return $printer
        }

        'Default' {
            $defaultPrinter = $printers | Where-Object { $_.IsDefault -eq $true }
            if (-not $defaultPrinter) {
                Write-Warning "No default printer configured."
                return
            }
            return $defaultPrinter
        }
    }
}