Public/Get-DevVmAlias.ps1

function Get-DevVmAlias {
    <#
    .SYNOPSIS
    Lists all configured custom aliases for devvm.
 
    .DESCRIPTION
    Displays all custom aliases defined in the global .devvm configuration file,
    as well as the default aliases (devvm, dvm).
 
    .EXAMPLE
    Get-DevVmAlias
    Lists all configured aliases.
 
    .NOTES
    Default aliases (devvm, dvm) are always available even if not listed in the configuration.
    #>

    [CmdletBinding()]
    param()

    $homeDir = Get-HomeDirectory
    $globalConfigPath = Join-Path -Path $homeDir -ChildPath '.devvm'

    # Collect aliases for output
    $defaultAliases = @('devvm', 'dvm')
    $customAliases = @()

    if (Test-Path $globalConfigPath) {
        try {
            $rawContent = Get-Content -Path $globalConfigPath -Raw
            if ($rawContent -and $rawContent.Trim()) {
                $parsed = $rawContent | ConvertFrom-Json

                if ($parsed.alias -and $parsed.alias.Count -gt 0) {
                    $customAliases = @($parsed.alias)
                }
            }
        }
        catch {
            Write-Warning "Failed to load aliases: $_"
        }
    }

    # Display default aliases
    Write-Host "`nDefault aliases:" -ForegroundColor Cyan
    foreach ($alias in $defaultAliases) {
        Write-Host " $alias" -ForegroundColor Green
    }

    # Display custom aliases
    if ($customAliases.Count -gt 0) {
        Write-Host "`nCustom aliases:" -ForegroundColor Cyan
        foreach ($alias in $customAliases) {
            Write-Host " $alias" -ForegroundColor Green
        }
    }
    else {
        Write-Host "`nNo custom aliases configured." -ForegroundColor Yellow
        Write-Host "Use 'Set-DevVmAlias' or 'devvm alias add <name>' to create one."
    }

    Write-Host ""

    # Return object for testing/piping
    [PSCustomObject]@{
        DefaultAliases = $defaultAliases
        CustomAliases  = $customAliases
    }
}