core/private/Get-JaxPsakeTaskEntities.ps1
|
function Get-JaxPsakeTaskEntities { [CmdletBinding()] param ( [object[]] $DirPaths, [string] $FilePattern, [string[]] $TaskIgnoreList, [System.Collections.IDictionary] $AliasesMap, [switch] $NoCache ) $commonParams = Get-JaxCommonParameters -BoundParameters $PSBoundParameters Write-Debug "FUNC: $($MyInvocation.MyCommand.Name) Args: $($PSBoundParameters | ConvertTo-Json -Depth 1 -Compress -WarningAction SilentlyContinue)" Initialize-JaxPsakeProvider @commonParams $entities = @() if ($null -eq $DirPaths -or $DirPaths.Count -eq 0) { return $entities } $ignoreSet = @() if ($TaskIgnoreList) { $ignoreSet = @($TaskIgnoreList | ForEach-Object { $_.ToString().Trim().ToLowerInvariant() } | Where-Object { $_ -ne '' }) } foreach ($dir in $DirPaths) { $dirPath = $dir $dirType = $null if ($dir -is [System.Collections.IDictionary]) { if ($dir.Contains('Path')) { $dirPath = $dir['Path'] } if ($dir.Contains('DirectoryType')) { $dirType = $dir['DirectoryType'] } } if ([string]::IsNullOrWhiteSpace($dirPath)) { continue } if (-not (Test-Path -Path $dirPath -PathType Container)) { continue } $pattern = $FilePattern if ([string]::IsNullOrWhiteSpace($pattern)) { $pattern = 'psakefile*.ps1' } $files = Get-ChildItem -Path $dirPath -Filter $pattern -File -ErrorAction SilentlyContinue | Sort-Object -Property FullName $dirEntities = @() foreach ($file in $files) { $fileEntities = @() $definitions = Get-JaxPsakeTaskDefinitions -FilePath $file.FullName -NoCache:$NoCache @commonParams foreach ($definition in $definitions) { $taskName = $definition['Name'] if ([string]::IsNullOrWhiteSpace($taskName)) { continue } if ($ignoreSet -contains $taskName.ToLowerInvariant()) { continue } $aliases = Resolve-JaxEntityAliases -Key $taskName -AliasesMap $AliasesMap -AdditionalAliases $null @commonParams $provenance = 'psake' if (-not [string]::IsNullOrWhiteSpace($dirType)) { $provenance = "psake -> $dirType" } $entity = [ordered]@{ Key = $taskName Runner = 'psake' Tasks = @($taskName) PsakeFile = $definition['FullPath'] Args = $null Script = $null Container = $null Provenance = $provenance SourcePath = $definition['FullPath'] Aliases = $aliases Definition = $definition DirectoryType = $dirType } $fileEntities += $entity } if ($fileEntities.Count -gt 0) { $dirEntities = Merge-JaxRunEntityList -Base $dirEntities -Add $fileEntities @commonParams } } if ($dirEntities.Count -gt 0) { $entities = Merge-JaxRunEntityList -Base $entities -Add $dirEntities @commonParams } } return $entities } |