Private/UI/Show-DependencyList.ps1
|
function Show-DependencyList { param([GalleryModuleInfo]$ModuleInfo) $palette = Get-PSMBColorPalette $esc = [char]27 $reset = "${esc}[0m" $innerWidth = Get-PSMBConsoleInnerWidth $border = ([char]0x2502) $hLine = ([char]0x2500) $amberRGB = @(168, 213, 162) $roseRGB = @(94, 234, 212) $fitText = { param([string]$Text) if ($null -eq $Text) { return '' } if ($Text.Length -le $innerWidth) { return $Text } if ($innerWidth -le 3) { return $Text.Substring(0, [Math]::Max(0, $innerWidth)) } return $Text.Substring(0, $innerWidth - 3) + '...' } $writePaddedLine = { param([string]$Text, [string]$Style) $clipped = & $fitText $Text $padded = $clipped.PadRight($innerWidth) Write-Host (' {0}{1}{2}{3}{4}{5}' -f $palette.Surface, $border, $Style, $padded, $reset, ('{0}{1}{2}' -f $palette.Surface, $border, $reset)) } Write-Host '' # Top border $topLine = Get-PSMBGradientLine -Character $hLine -Length $innerWidth -StartRGB $amberRGB -EndRGB $roseRGB Write-Host (' {0}{1}{2}{3}' -f $palette.Surface, ([char]0x256D), $topLine, ([char]0x256E)) -NoNewline Write-Host $palette.Reset & $writePaddedLine -Text '' -Style $palette.Text # Title $titleText = ' Dependencies for {0}' -f $ModuleInfo.Name & $writePaddedLine -Text $titleText -Style ('{0}{1}' -f $palette.Bold, $palette.Amber) & $writePaddedLine -Text '' -Style $palette.Text # Separator $sepLine = Get-PSMBGradientLine -Character $hLine -Length $innerWidth -StartRGB $amberRGB -EndRGB $roseRGB Write-Host (' {0}{1}{2}{3}' -f $palette.Surface, ([char]0x251C), $sepLine, ([char]0x2524)) -NoNewline Write-Host $palette.Reset & $writePaddedLine -Text '' -Style $palette.Text if (-not $ModuleInfo.Dependencies -or $ModuleInfo.Dependencies.Count -eq 0) { & $writePaddedLine -Text ' No dependencies listed.' -Style $palette.Dim } else { & $writePaddedLine -Text (' Direct Dependencies: {0}' -f $ModuleInfo.Dependencies.Count) -Style ('{0}{1}' -f $palette.Bold, $palette.Text) & $writePaddedLine -Text '' -Style $palette.Text foreach ($dep in $ModuleInfo.Dependencies) { $installed = Get-Module -Name $dep -ListAvailable -ErrorAction SilentlyContinue if ($installed) { $depText = ' {0} {1} (installed v{2})' -f ([char]0x2714), $dep, $installed[0].Version & $writePaddedLine -Text $depText -Style $palette.Green } else { $depText = ' {0} {1} (not installed)' -f ([char]0x25CB), $dep & $writePaddedLine -Text $depText -Style $palette.Yellow } } & $writePaddedLine -Text '' -Style $palette.Text $notInstalled = $ModuleInfo.Dependencies | Where-Object { -not (Get-Module -Name $_ -ListAvailable -ErrorAction SilentlyContinue) } if ($notInstalled) { $impact = '+{0} additional module(s) will be installed' -f @($notInstalled).Count & $writePaddedLine -Text (' Install Impact: {0}' -f $impact) -Style $palette.Yellow } else { & $writePaddedLine -Text ' Install Impact: All dependencies already installed.' -Style $palette.Green } } & $writePaddedLine -Text '' -Style $palette.Text # Bottom border $bottomLine = Get-PSMBGradientLine -Character $hLine -Length $innerWidth -StartRGB $amberRGB -EndRGB $roseRGB Write-Host (' {0}{1}{2}{3}' -f $palette.Surface, ([char]0x2570), $bottomLine, ([char]0x256F)) -NoNewline Write-Host $palette.Reset Write-Host '' } |