scripts/Build-Task.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
function Build-Task { [CmdletBinding()] param ( [Parameter(Position = 0, Mandatory = $false, ValueFromPipeline = $true)] [object]$item, [Parameter(Position = 1, Mandatory = $false)] [object]$name = "task_$(++(Peek-Invocation).tasks_count | Write-Output)" ) process { $ErrorActionPreference = "Stop" if (-not $item) { return @{ name = $name; steps = @(); depends_on = @(); on_error = 'throw'; when = '$true'; work_dir = ''; } } if (($item -is [Collections.Generic.List[Object]]) -or ($item -is [object[]])) { $item = @{ name = $name; steps = $item } } elseif (-not ($item -is [hashtable])) { throw "Unknown tasks item type: $($item.GetType().Name)" } return @{ name = Coalesce $item.name, $name; steps = Coalesce $item.steps, $item.scripts, @(); depends_on = Coalesce $item.depends_on, @(); on_error = Coalesce $item.on_error, 'throw'; when = (Build-When $item); work_dir = Coalesce $item.work_dir, $item.in, ''; } } } |