scripts/Normalize-Task.ps1
function Normalize-Task { [CmdletBinding()] param ( [Parameter(Position = 0, Mandatory = $false, ValueFromPipeline = $true)] [object]$item, [Parameter(Position = 1, Mandatory = $false)] [object]$name = "task_$([Math]::Abs((Get-Date).GetHashCode()))" ) process { $ErrorActionPreference = "Stop" if (-not $item) { return @{ name = $name; steps = @(); depends_on = @(); 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, @(); when = (Normalize-When $item); work_dir = Coalesce $item.work_dir, $item.in, ''; } } } |