public/Get-AdfDocDiagram.ps1
|
<# .SYNOPSIS Generates mermaid diagram of dependencies between ADF objects. .DESCRIPTION Generates mermaid diagram of dependencies between ADF objects. .PARAMETER adf Object of adf class represents all adf objects from code. .PARAMETER direction Diagram direction: LR - Left to Right (default), TD - Top to Down .PARAMETER exclude Array of object names to exclude from diagram. Wildcards are supported. .PARAMETER include Array of object names to include in diagram. Wildcards are supported. If this parameter is used, only the specified objects and their dependencies will be included in the diagram. .EXAMPLE $RootFolder = "c:\GitHub\AdfName\" $adf = Import-AdfFromFolder -RootFolder $RootFolder -FactoryName 'whatever' Get-AdfDocDiagram -adf $adf .EXAMPLE Get-AdfDocDiagram -adf $adf -direction 'TD' .EXAMPLE Get-AdfDocDiagram -adf $adf | Set-Content -Path 'adf-diagram.md' .LINK Online version: https://github.com/SQLPlayer/azure.datafactory.tools/ #> function Get-AdfDocDiagram { [CmdletBinding()] param ( [parameter(Mandatory = $true, ValueFromPipeline = $true)] [Adf] $adf, [ValidateSet("LR", "TD")] [String] $direction = 'LR', [Array] $exclude = $null, [Array] $include = $null ) Write-Debug "BEGIN: Get-AdfDocDiagram(adf=$adf, direction=$direction)" $diag = "" $line = "::: mermaid`ngraph $direction`n" $diag += $line $adf.AllObjects() | ForEach-Object { $o = $_ $n1 = $o.FullName().Replace(' ', '_') Write-Verbose "Analyse: $($o.FullName())" foreach ($d in $o.DependsOn) { $n2 = $d.Replace(' ', '_') $n2 = $n2.ToLower()[0] + $n2.Substring(1) Write-Verbose "- $d" $show = $true if ($include) { $show = ($include | ForEach-Object { if ($n1 -ilike $_ -or $n2 -ilike $_) {1} else {0} } | Measure-Object -Maximum).Maximum -gt 0 } else { $show = -not ($exclude | ForEach-Object { if ($n1 -ilike $_ -or $n2 -ilike $_) {1} else {0} } | Measure-Object -Maximum).Maximum -gt 0 } if ($show) { $line = "$n1 --> $n2" $diag += $line + "`n" } else { Write-Verbose "$d - excluded." } } } $diag += ":::" Write-Debug "END: Get-AdfDocDiagram()" return $diag } |