Private/Expand-DFXdgPath.ps1

#Requires -Version 7.0

function Expand-DFXdgPath {
    <#
    .SYNOPSIS
        Expands ${XDG_*} placeholder tokens in a template string to their
        actual environment variable values.
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param([Parameter(Mandatory)][string]$Template)

    $expanded = $Template `
        -creplace '\$\{XDG_CONFIG_HOME\}', $Env:XDG_CONFIG_HOME `
        -creplace '\$\{XDG_DATA_HOME\}',   $Env:XDG_DATA_HOME `
        -creplace '\$\{XDG_STATE_HOME\}',  $Env:XDG_STATE_HOME `
        -creplace '\$\{XDG_CACHE_HOME\}',  $Env:XDG_CACHE_HOME

    # Normalize ONLY when an XDG token was present: a token-bearing value is always a
    # filesystem path. Token-less values are literal flag strings (LESS, FZF_*, ...)
    # and must pass through byte-for-byte. See docs/external-dependencies.md.
    if ($Template -cmatch '\$\{XDG_(CONFIG|DATA|STATE|CACHE)_HOME\}') {
        return ConvertTo-DFPath $expanded
    }
    $expanded
}