scripts/Arrange-Tasks.ps1
function Arrange-Tasks { [CmdletBinding()] param ( [Parameter(Position = 0, Mandatory = $true)] [hashtable]$config, [Parameter(Position = 1, Mandatory = $false)] [object[]]$depends_on = $config.invoke_tasks, [Parameter(Position = 2, Mandatory = $false)] [int]$depth = 0 ) process { if ($depth -gt 100) { throw "Circular reference detected for dependant tasks in: $depends_on" } $tasks = @() foreach ($name in $depends_on) { if (-not ($config.tasks.Keys -contains $name)) { throw "Task '$name' is undefined in the PWSHAKE config." } $task = Normalize-Task $config.tasks[$name] $name if ($task.depends_on) { $tasks += (Arrange-Tasks $config $task.depends_on ($depth + 1)) } $tasks += $task } return $tasks } } |