KubeBuddy.psm1
# Ensure powershell-yaml module is installed $requiredModule = 'powershell-yaml' if (-not (Get-Module -ListAvailable -Name $requiredModule)) { Write-Host "Installing required module: $requiredModule..." -ForegroundColor Yellow try { # Ensure PSGallery is trusted if ((Get-PSRepository -Name PSGallery).InstallationPolicy -ne 'Trusted') { Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction Stop } Install-Module -Name $requiredModule -Scope CurrentUser -Force -AllowClobber -ErrorAction Stop Write-Host "$requiredModule installed successfully." -ForegroundColor Green } catch { Write-Error "Failed to install $requiredModule. Error: $_" throw "Module installation failed. Please install $requiredModule manually using 'Install-Module $requiredModule -AllowClobber'." } } # Import powershell-yaml try { Import-Module -Name powershell-yaml -ErrorAction Stop } catch { Write-Error "Failed to import $requiredModule. Error: $_" throw "Module import failed. Ensure $requiredModule is installed and accessible." } # Load all private functions (not exported) $privateScripts = Get-ChildItem -Path "$PSScriptRoot/Private" -Recurse -File -Filter "*.ps1" foreach ($script in $privateScripts) { . $script.FullName } # Load all public functions (exported) $publicScripts = Get-ChildItem -Path "$PSScriptRoot/Public" -Recurse -File -Filter "*.ps1" foreach ($script in $publicScripts) { . $script.FullName } # Export public functions Export-ModuleMember -Function 'Invoke-KubeBuddy' |