formats/GitHubContext.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
    <ViewDefinitions>
        <View>
            <Name>GitHubContextTableView</Name>
            <ViewSelectedBy>
                <TypeName>AppGitHubContext</TypeName>
                <TypeName>InstallationGitHubContext</TypeName>
                <TypeName>UserGitHubContext</TypeName>
                <TypeName>GitHubContext</TypeName>
            </ViewSelectedBy>
            <TableControl>
                <TableHeaders>
                    <TableColumnHeader>
                        <Label>*</Label>
                    </TableColumnHeader>
                    <TableColumnHeader>
                        <Label>Name</Label>
                    </TableColumnHeader>
                    <TableColumnHeader>
                        <Label>AuthType</Label>
                    </TableColumnHeader>
                    <TableColumnHeader>
                        <Label>TokenType</Label>
                    </TableColumnHeader>
                    <TableColumnHeader>
                        <Label>TokenExpirationDate</Label>
                    </TableColumnHeader>
                    <TableColumnHeader>
                        <Label>Remaining</Label>
                    </TableColumnHeader>
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <ScriptBlock>
                                    if ($_.Name -eq (Get-GitHubConfig).DefaultContext) {
                                    ">"
                                    }
                                </ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>Name</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>AuthType</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>TokenType</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>TokenExpirationDate</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <ScriptBlock>
                                    if ($null -eq $_.Remaining) {
                                    return
                                    }

                                    if ($_.Remaining -lt 0) {
                                    $text = "Expired"
                                    } else {
                                    $text = "$($_.Remaining.Hours)h $($_.Remaining.Minutes)m $($_.Remaining.Seconds)s"
                                    }

                                    if ($Host.UI.SupportsVirtualTerminal -and
                                    ($env:GITHUB_ACTIONS -ne 'true')) {
                                    switch ($_.AuthType) {
                                    'UAT' {
                                    $MaxValue = [TimeSpan]::FromHours(8)
                                    }
                                    'IAT' {
                                    $MaxValue = [TimeSpan]::FromHours(1)
                                    }
                                    }
                                    $ratio = [Math]::Min(($_.Remaining / $MaxValue), 1)

                                    if ($ratio -ge 1) {
                                    $r = 0
                                    $g = 255
                                    } elseif ($ratio -le 0) {
                                    $r = 255
                                    $g = 0
                                    } elseif ($ratio -ge 0.5) {
                                    $r = [Math]::Round(255 * (2 - 2 * $ratio))
                                    $g = 255
                                    } else {
                                    $r = 255
                                    $g = [Math]::Round(255 * (2 * $ratio))
                                    }
                                    $b = 0
                                    $color = $PSStyle.Foreground.FromRgb($r, $g, $b)
                                    "$color$text$($PSStyle.Reset)"
                                    } else {
                                    $text
                                    }
                                </ScriptBlock>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
        <View>
            <Name>GitHubContextListView</Name>
            <ViewSelectedBy>
                <TypeName>GitHubContext</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>ID</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Name</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>DisplayName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Type</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HostName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>ApiBaseUri</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>ApiVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>AuthType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>NodeID</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>DatabaseID</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>UserName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>TokenType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Enterprise</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Owner</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Repository</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HttpVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>PerPage</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>AppGitHubContextListView</Name>
            <ViewSelectedBy>
                <TypeName>AppGitHubContext</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>Name</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Type</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>AuthType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>TokenType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HostName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>UserName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>ClientID</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>OwnerName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>OwnerType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Permissions</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Events</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>ApiBaseUri</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Enterprise</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Owner</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Repository</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HttpVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>PerPage</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>InstallationGitHubContextListView</Name>
            <ViewSelectedBy>
                <TypeName>InstallationGitHubContext</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>Name</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Type</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>AuthType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>TokenType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HostName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>UserName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>ClientID</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>InstallationID</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>TokenExpirationDate</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>InstallationType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>InstallationName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Permissions</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Events</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>ApiBaseUri</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Enterprise</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Owner</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Repository</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HttpVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>PerPage</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>UserGitHubContextListView</Name>
            <ViewSelectedBy>
                <TypeName>UserGitHubContext</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>Name</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Type</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>AuthType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>TokenType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HostName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>UserName</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>AuthClientID</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>DeviceFlowType</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Scope</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>TokenExpirationDate</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>RefreshTokenExpirationDate</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>ApiBaseUri</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Enterprise</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Owner</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Repository</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>HttpVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>PerPage</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
    </ViewDefinitions>
</Configuration>