Private/UnifiConfig.ps1

function Get-UnifiConfigPath {
    $dir = Join-Path $env:APPDATA 'UnifiCLI'
    if (-not (Test-Path $dir)) {
        New-Item -ItemType Directory -Path $dir -Force | Out-Null
    }
    Join-Path $dir 'config.json'
}

function Read-UnifiConfig {
    $path = Get-UnifiConfigPath
    if (Test-Path $path) {
        Get-Content $path -Raw | ConvertFrom-Json -AsHashtable
    } else {
        $null
    }
}

# Password is intentionally excluded — never written to disk
function Write-UnifiConfig {
    param(
        [Parameter(Mandatory)]
        [hashtable]$Config
    )
    $safe = @{
        ControllerUrl        = $Config.ControllerUrl
        Username             = $Config.Username
        DefaultSite          = $Config.DefaultSite
        SkipCertificateCheck = $Config.SkipCertificateCheck
    }
    $safe | ConvertTo-Json | Set-Content -Path (Get-UnifiConfigPath) -Encoding UTF8
}