Renderers/PSModuleInfoRenderer.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function Write-ModuleHeader
{
    ## Do we need to write headers?
    if (($script:currentDirectory -eq ""))
    {
        Write-Host
        Write-Host "ModuleType Version Name ExportedCommands"
        Write-Host "---------- ------- ---- ----------------"

        $script:currentDirectory = "Modules"
    }
}

function Write-Module
{
    param ([Parameter(Mandatory=$True,Position=1)] $item)

    Write-ModuleHeader


    $foreground = $global:PoshColor.Module.Default.Color    

    if ($item.ModuleType.ToString() -eq 'Binary') {
        $foreground = $global:PoshColor.Module.Binary.Color
    }
    elseif($item.ModuleType.ToString() -eq 'Cim') {
        $foreground =  $global:PoshColor.Module.Cim.Color
    }
    elseif($item.ModuleType.ToString() -eq 'Manifest') {
        $foreground =  $global:PoshColor.Module.Manifest.Color
    }
    elseif($item.ModuleType.ToString() -eq 'Script') {
        $foreground =  $global:PoshColor.Module.Script.Color
    }
    elseif($item.ModuleType.ToString() -eq 'Workflow') {
        $foreground =  $global:PoshColor.Module.Workflow.Colorz
    }

    $info = [String]::Format("{0,-10} {1, -10} {2, -36}", $item.ModuleType, $item.Version, $item.Name)

    $commands = [String]::Join(",", $item.ExportedCommands.Keys)

    $width = $Host.UI.RawUI.WindowSize.Width - $info.Length - 6;

    if ($width -lt 30)
    {
        $width = 30
    }

    if ($commands.Length -ge $width)
    {
        $commands = $commands.Substring(0, $width) + ".."
    }

    $info = $info + "{$commands}"

    Write-HostColor $info -Foreground $foreground

    return $true;
}