PowerCode.Git.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <!-- Default table view for GitCommitInfo: colored like git log -oneline -decorate -->
    <View>
      <Name>GitCommitInfo-Default</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitCommitInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <AutoSize />
        <TableHeaders>
          <TableColumnHeader>
            <Label>Commit</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Message</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatShortSha($_.ShortSha)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  $refs = [PowerCode.Git.Formatting.GitLogFormatter]::FormatDecorations($_.Decorations)
                  if ($refs) { "$refs $($_.MessageShort)" } else { $_.MessageShort }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- Detailed table view for GitCommitInfo: Commit, Refs, Author, Date, Message -->
    <View>
      <Name>GitCommitInfo-Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitCommitInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Commit</Label>
            <Width>9</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Refs</Label>
            <Width>30</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Author</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Date</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Message</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatShortSha($_.ShortSha)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatDecorations($_.Decorations)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>AuthorName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>$_.AuthorDate.ToString('yyyy-MM-dd HH:mm')</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MessageShort</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- Full list view for GitCommitInfo -->
    <View>
      <Name>GitCommitInfo-Full</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitCommitInfo</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Commit</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatFullSha($_.Sha)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Refs</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatDecorations($_.Decorations)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Author</Label>
                <ScriptBlock>"$($_.AuthorName) &lt;$($_.AuthorEmail)&gt;"</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>AuthorDate</Label>
                <PropertyName>AuthorDate</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Committer</Label>
                <ScriptBlock>"$($_.CommitterName) &lt;$($_.CommitterEmail)&gt;"</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>CommitDate</Label>
                <PropertyName>CommitDate</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parents</Label>
                <ScriptBlock>$_.ParentShas -join ', '</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Message</Label>
                <PropertyName>Message</PropertyName>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- Default table view for GitStatusResult — colored branch and counts -->
    <View>
      <Name>GitStatusResult-Default</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitStatusResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Branch</Label>
            <Width>25</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Staged</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Modified</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Untracked</Label>
            <Width>10</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatBranch($_.CurrentBranch)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatStagedCount($_.StagedCount)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatModifiedCount($_.ModifiedCount)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatUntrackedCount($_.UntrackedCount)</ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- Detailed list view for GitStatusResult — grouped entries with section headers -->
    <View>
      <Name>GitStatusResult-Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitStatusResult</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>RepositoryPath</Label>
                <PropertyName>RepositoryPath</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Branch</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatBranch($_.CurrentBranch)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Staged</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatStagedCount($_.StagedCount)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Modified</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatModifiedCount($_.ModifiedCount)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Untracked</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatUntrackedCount($_.UntrackedCount)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Entries</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatEntries($_.Entries)</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- Default table view for GitStatusEntry — colored status indicators -->
    <View>
      <Name>GitStatusEntry-Default</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitStatusEntry</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Status</Label>
            <Width>4</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Path</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitStatusFormatter]::FormatEntryStatus($_)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>FilePath</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- Default list view for GitDiffEntry -->
    <View>
      <Name>GitDiffEntry-Default</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitDiffEntry</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Status</Label>
                <PropertyName>Status</PropertyName>
              </ListItem>
              <ListItem>
                <Label>OldPath</Label>
                <PropertyName>OldPath</PropertyName>
              </ListItem>
              <ListItem>
                <Label>NewPath</Label>
                <PropertyName>NewPath</PropertyName>
              </ListItem>
              <ListItem>
                <Label>LinesAdded</Label>
                <PropertyName>LinesAdded</PropertyName>
              </ListItem>
              <ListItem>
                <Label>LinesDeleted</Label>
                <PropertyName>LinesDeleted</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Patch</Label>
                <ScriptBlock>
                  if ($_.Patch) {
                    ($_.Patch -split '\n' | ForEach-Object {
                      if ($_ -match '^(\+\+\+|---)') { "`e[1m$_`e[0m" }
                      elseif ($_ -match '^diff ') { "`e[1m$_`e[0m" }
                      elseif ($_ -match '^\+') { "`e[32m$_`e[0m" }
                      elseif ($_ -match '^-') { "`e[31m$_`e[0m" }
                      elseif ($_ -match '^@@') { "`e[36m$_`e[0m" }
                      else { $_ }
                    }) -join "`n"
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- Summary table view for GitDiffEntry — colored status -->
    <View>
      <Name>GitDiffEntry-Summary</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitDiffEntry</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <AutoSize />
        <TableHeaders>
          <TableColumnHeader>
            <Label>Status</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Added</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Deleted</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Path</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>
                  switch ($_.Status.ToString()) {
                    'Added' { "`e[32m$($_.Status)`e[0m" }
                    'Deleted' { "`e[31m$($_.Status)`e[0m" }
                    'Modified' { "`e[33m$($_.Status)`e[0m" }
                    'Renamed' { "`e[36m$($_.Status)`e[0m" }
                    default { $_.Status.ToString() }
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.LinesAdded -gt 0) { "`e[32m+$($_.LinesAdded)`e[0m" } else { $_.LinesAdded }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.LinesDeleted -gt 0) { "`e[31m-$($_.LinesDeleted)`e[0m" } else { $_.LinesDeleted }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>NewPath</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- Default table view for GitBranchInfo — colored branch names -->
    <View>
      <Name>GitBranchInfo-Default</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitBranchInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Name</Label>
            <Width>30</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Commit</Label>
            <Width>9</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Tracking</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitBranchFormatter]::FormatBranchName($_)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatShortSha($_.TipShortSha)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitBranchFormatter]::FormatTracking($_)</ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- Detailed list view for GitBranchInfo -->
    <View>
      <Name>GitBranchInfo-Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitBranchInfo</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Name</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitBranchFormatter]::FormatBranchName($_)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>IsHead</Label>
                <PropertyName>IsHead</PropertyName>
              </ListItem>
              <ListItem>
                <Label>IsRemote</Label>
                <PropertyName>IsRemote</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Commit</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatFullSha($_.TipSha)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Tracking</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitBranchFormatter]::FormatTracking($_)</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- Default table view for GitTagInfo — colored tag names -->
    <View>
      <Name>GitTagInfo-Default</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitTagInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Name</Label>
            <Width>25</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Commit</Label>
            <Width>9</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Annotated</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Date</Label>
            <Width>20</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>"`e[1;33m$($_.Name)`e[0m"</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatShortSha($_.ShortSha)</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>IsAnnotated</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.TagDate) { $_.TagDate.ToString('yyyy-MM-dd HH:mm') } else { '' }</ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- Detailed list view for GitTagInfo -->
    <View>
      <Name>GitTagInfo-Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PowerCode.Git.Abstractions.Models.GitTagInfo</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Name</Label>
                <ScriptBlock>"`e[1;33m$($_.Name)`e[0m"</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Commit</Label>
                <ScriptBlock>[PowerCode.Git.Formatting.GitLogFormatter]::FormatFullSha($_.Sha)</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>IsAnnotated</Label>
                <PropertyName>IsAnnotated</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Tagger</Label>
                <ScriptBlock>if ($_.TaggerName) { "$($_.TaggerName) &lt;$($_.TaggerEmail)&gt;" } else { '' }</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>TagDate</Label>
                <PropertyName>TagDate</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Message</Label>
                <PropertyName>Message</PropertyName>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
  </ViewDefinitions>
</Configuration>