Private/ConvertTo-WorkflowMarkdown.ps1
|
function ConvertTo-WorkflowMarkdown { param( $WorkflowRecord, [switch] $AzureDevOps ) $lines = [System.Collections.Generic.List[string]]::new() $lines.Add("## $($WorkflowRecord.DisplayName)") $lines.Add('') $lines.Add('| Property | Value |') $lines.Add('| --- | --- |') $lines.Add("| ID | $(Format-NullableValue -Value $WorkflowRecord.Id) |") $lines.Add("| Description | $(Format-NullableValue -Value $WorkflowRecord.Description) |") $lines.Add("| Category | $(Format-NullableValue -Value $WorkflowRecord.Category) |") $lines.Add("| Enabled | $(Format-NullableValue -Value $WorkflowRecord.IsEnabled) |") $lines.Add("| Scheduling enabled | $(Format-NullableValue -Value $WorkflowRecord.IsSchedulingEnabled) |") $lines.Add("| Created | $(Format-NullableValue -Value $WorkflowRecord.CreatedDateTime) |") $lines.Add("| Last modified | $(Format-NullableValue -Value $WorkflowRecord.LastModifiedDateTime) |") $lines.Add("| Trigger | $(Format-NullableValue -Value $WorkflowRecord.TriggerSummary) |") $lines.Add("| Scope | $(Format-NullableValue -Value $WorkflowRecord.ScopeSummary) |") $lines.Add('') $lines.Add('### Tasks') $lines.Add('') if ($WorkflowRecord.Tasks.Count -eq 0) { $lines.Add('No tasks found.') } else { foreach ($task in $WorkflowRecord.Tasks) { $status = if ($task.IsEnabled) { 'enabled' } else { 'disabled' } $lines.Add("- [$($task.ExecutionSequence)] $(Format-NullableValue -Value $task.DisplayName) ($status)") $lines.Add(" Definition: $(Format-NullableValue -Value $task.DefinitionDisplayName)") if ($task.CustomExtension) { $lines.Add(" Custom extension: $(Format-NullableValue -Value $task.CustomExtension.DisplayName)") $logicAppLink = if ($task.CustomExtension.SubscriptionId -and $task.CustomExtension.ResourceGroupName -and $task.CustomExtension.LogicAppName) { $url = "https://portal.azure.com/#resource/subscriptions/$([Uri]::EscapeDataString($task.CustomExtension.SubscriptionId))/resourceGroups/$([Uri]::EscapeDataString($task.CustomExtension.ResourceGroupName))/providers/Microsoft.Logic/workflows/$([Uri]::EscapeDataString($task.CustomExtension.LogicAppName))" "[$($task.CustomExtension.LogicAppName)]($url)" } else { Format-NullableValue -Value $task.CustomExtension.LogicAppName } $lines.Add(" Logic App: $logicAppLink") $lines.Add(" Resource group: $(Format-NullableValue -Value $task.CustomExtension.ResourceGroupName)") $lines.Add(" Subscription: $(Format-NullableValue -Value $task.CustomExtension.SubscriptionId)") } foreach ($argument in $task.Arguments.GetEnumerator()) { if ($argument.Key -eq 'customTaskExtensionID') { continue } $lines.Add(" Argument: $($argument.Key) = $(Format-NullableValue -Value $argument.Value)") } $lines.Add('') } } $lines.Add('### Mermaid') $lines.Add('') if ($AzureDevOps) { $lines.Add(':::mermaid') $lines.Add((ConvertTo-WorkflowMermaid -WorkflowRecord $WorkflowRecord)) $lines.Add(':::') } else { $lines.Add('```mermaid') $lines.Add((ConvertTo-WorkflowMermaid -WorkflowRecord $WorkflowRecord)) $lines.Add('```') } $lines.Add('') return ($lines -join [Environment]::NewLine) } |