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. .DESCRIPTION Replaces ${XDG_CONFIG_HOME}, ${XDG_DATA_HOME}, ${XDG_STATE_HOME} and ${XDG_CACHE_HOME} (case-sensitive) with the current env var values. A template that contained a token is a path, so the result is canonicalized with ConvertTo-DFPath. A template with no token (flag strings like LESS or FZF_DEFAULT_OPTS) is returned byte-for-byte. Used for every value in a tool's xdg.vars and env blocks. .PARAMETER Template The string to expand, e.g. '${XDG_CONFIG_HOME}/bat'. .OUTPUTS System.String. #> [CmdletBinding()] [OutputType([string])] param([Parameter(Mandatory)][string]$Template) $expanded = $Template ` -creplace '\$\{XDG_CONFIG_HOME\}', { Get-DFXdgPath Config } ` -creplace '\$\{XDG_DATA_HOME\}', { Get-DFXdgPath Data } ` -creplace '\$\{XDG_STATE_HOME\}', { Get-DFXdgPath State } ` -creplace '\$\{XDG_CACHE_HOME\}', { Get-DFXdgPath Cache } # 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 } |