plugins/bob/private/Resolve-JaxBobScenarioLibraryFiles.ps1
|
function Resolve-JaxBobScenarioLibraryFiles { [CmdletBinding()] param ( [string] $RepoRoot, [string] $EnvDir, [System.Collections.IDictionary] $Config ) if ($null -eq $Config) { $Config = Get-JaxConfig -RepoRoot $RepoRoot } $paths = Get-JaxEnvHierarchyPaths -RepoRoot $RepoRoot -Config $Config -EnvDir $EnvDir $dirName = $Config.scenarioLibDirName if ([string]::IsNullOrWhiteSpace($dirName)) { $dirName = 'scenarios-lib' } $files = New-Object 'System.Collections.Generic.List[string]' $seen = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::OrdinalIgnoreCase) foreach ($path in $paths) { $libraryDir = Join-Path $path $dirName if (-not (Test-Path -Path $libraryDir -PathType Container)) { continue } $candidates = @() $candidates += Get-ChildItem -Path $libraryDir -Filter '*.yml' -File -Recurse -ErrorAction SilentlyContinue $candidates += Get-ChildItem -Path $libraryDir -Filter '*.yaml' -File -Recurse -ErrorAction SilentlyContinue $candidates = $candidates | Sort-Object -Property FullName -Unique foreach ($file in $candidates) { $resolved = (Resolve-Path $file.FullName).Path if ($seen.Add($resolved)) { $files.Add($resolved) | Out-Null } } } return @($files) } |