KlippyCLI.psm1

#Requires -Version 7.0
<#
.SYNOPSIS
    KlippyCLI - PowerShell module for managing Klipper/Moonraker 3D printers.

.DESCRIPTION
    Provides cmdlets for interacting with Klipper 3D printers via the Moonraker API.
    Supports multi-printer configuration, print management, file operations, and real-time monitoring.

.NOTES
    Author: Carlos Perez (carlos_perez@darkoperator.com)
    Project: https://github.com/darkoperator/KlippyCLI
#>


# Module-scoped variables
$script:KlippyRegistryPath = $null
$script:KlippyDefaultTimeout = 30
$script:KlippyDefaultRetryCount = 3

# Get the module root path
$script:ModuleRoot = $PSScriptRoot

# Dot-source private functions
$privateFunctions = @(Get-ChildItem -Path "$PSScriptRoot/functions/private" -Filter '*.ps1' -ErrorAction SilentlyContinue)
foreach ($function in $privateFunctions) {
    try {
        . $function.FullName
    }
    catch {
        Write-Error "Failed to import private function '$($function.FullName)': $_"
    }
}

# Dot-source public functions
$publicFunctions = @(Get-ChildItem -Path "$PSScriptRoot/functions/public" -Filter '*.ps1' -ErrorAction SilentlyContinue)
foreach ($function in $publicFunctions) {
    try {
        . $function.FullName
    }
    catch {
        Write-Error "Failed to import public function '$($function.FullName)': $_"
    }
}

# Export only public functions (handled by manifest, but explicit for clarity)
$publicFunctionNames = $publicFunctions | ForEach-Object { $_.BaseName }
if ($publicFunctionNames) {
    Export-ModuleMember -Function $publicFunctionNames
}