Public/Compare-Psd.ps1
|
function Compare-Psd { <# .SYNOPSIS Shows what was added, removed or changed between two files or objects. .DESCRIPTION Files are loaded with Import-Psd first. Lists are compared item by item. .EXAMPLE Compare-Psd ./base.psd1 ./next.psd1 #> [CmdletBinding()] param( [Parameter(Mandatory, Position = 0)] [object] $Left, [Parameter(Mandatory, Position = 1)] [object] $Right ) $sides = New-PsdList foreach ($x in @($Left, $Right)) { if ($x -is [string] -or $x -is [IO.FileInfo]) { $r = Invoke-PsdLoad -Path ([string]$x) if ($r.Ctx.Errors.Count -gt 0) { Write-PsdResult $PSCmdlet $r.Ctx ([string]$x); return } $sides.Add($r.Value) } else { $sides.Add($x) } } $out = New-PsdList Compare-PsdObjects $sides[0] $sides[1] '' $out foreach ($d in $out) { $d } } |