plugins/bob/private/Resolve-JaxBobFlavourFile.ps1
|
function Resolve-JaxBobFlavourFile { [CmdletBinding()] param ( [string] $Flavour, [System.Collections.IDictionary] $Layers, [string] $RepoRoot ) if ([string]::IsNullOrWhiteSpace($Flavour)) { return $null } if ($Flavour.Contains('/') -or $Flavour.Contains('\\') -or $Flavour.EndsWith('.yml') -or $Flavour.EndsWith('.yaml')) { $resolved = Resolve-JaxRunConfigPath -Path $Flavour -RepoRoot $RepoRoot -BaseDir $RepoRoot if (Test-Path -Path $resolved -PathType Leaf) { return (Resolve-Path $resolved).Path } return $null } $dir = $null if ($null -ne $Layers -and $Layers.ContainsKey('flavourDir')) { $dir = $Layers['flavourDir'] } if ([string]::IsNullOrWhiteSpace($dir)) { $dir = 'configs/jax-flavours' } $dir = Resolve-JaxRunConfigPath -Path $dir -RepoRoot $RepoRoot -BaseDir $RepoRoot if (-not (Test-Path -Path $dir -PathType Container)) { return $null } $patterns = @() if ($null -ne $Layers -and $Layers.ContainsKey('flavourPatterns')) { $patterns = @($Layers['flavourPatterns']) } if ($patterns.Count -eq 0) { $patterns = @('*.yml', '*.yaml') } foreach ($pattern in $patterns) { if ([string]::IsNullOrWhiteSpace($pattern)) { continue } $ext = $pattern.Trim() if ($ext.StartsWith('*')) { $ext = $ext.TrimStart('*') } if (-not $ext.StartsWith('.')) { $ext = ".$ext" } $candidate = Join-Path $dir "$Flavour$ext" if (Test-Path -Path $candidate -PathType Leaf) { return (Resolve-Path $candidate).Path } } return $null } |