ScubaGear.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<!--
    Display formatting for ScubaGear objects.
 
    Get-ScubaRequiredModuleList emits ScubaGear.RequiredModule objects and
    Get-ScubaGearDependencyStatus (and the internal Get-ScubaModuleDependencyStatus
    helper) emit ScubaGear.DependencyStatus objects. The table views below render a
    concise, user-friendly summary in the console while the full objects remain
    available for the pipeline (e.g. Get-ScubaGearDependencyStatus | Where-Object ...).
-->
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>ScubaGear.RequiredModule</Name>
      <ViewSelectedBy>
        <TypeName>ScubaGear.RequiredModule</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>ModuleName</Label>
            <Width>32</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>ModuleVersion</Label>
            <Width>15</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>MaximumVersion</Label>
            <Width>15</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Purpose</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>ModuleName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ModuleVersion</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MaximumVersion</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Purpose</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>ScubaGear.DependencyStatus</Name>
      <ViewSelectedBy>
        <TypeName>ScubaGear.DependencyStatus</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>ModuleName</Label>
            <Width>32</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Installed</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Versions</Label>
            <Width>9</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>HighestVersion</Label>
            <Width>15</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Status</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Action</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>ModuleName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Installed</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>VersionCount</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HighestVersion</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HighestVersionStatus</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Action</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>ScubaGear.VersionCheckResult</Name>
      <ViewSelectedBy>
        <TypeName>ScubaGear.VersionCheckResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Component</Label>
            <Width>13</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Installed</Label>
            <Width>12</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Latest</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Status</Label>
            <Width>18</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Recommendations</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Component</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.Component -eq 'ScubaGear') { $_.CurrentVersion } else { $_.ModulesInstalled }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.Component -eq 'ScubaGear') { $_.LatestVersion } else { '' }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Status</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Recommendations</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>ScubaGear.DependencyResetResult</Name>
      <ViewSelectedBy>
        <TypeName>ScubaGear.DependencyResetResult</TypeName>
      </ViewSelectedBy>
      <CustomControl>
        <CustomEntries>
          <CustomEntry>
            <CustomItem>
              <ExpressionBinding>
                <ScriptBlock>
                  $lines = @("Status : $($_.Status)")
                  if ($_.ActionsPerformed.Count -gt 0) {
                      $lines += 'Changes:'
                      foreach ($a in $_.ActionsPerformed) { $lines += " $a" }
                  }
                  elseif ($_.ActionsNeeded -eq 0) {
                      $lines += 'No changes needed.'
                  }
                  if ($_.Warnings.Count -gt 0) {
                      $lines += 'Warnings:'
                      foreach ($w in $_.Warnings) { $lines += " $w" }
                  }
                  if ($_.Errors.Count -gt 0) {
                      $lines += 'Errors:'
                      foreach ($e in $_.Errors) { $lines += " $e" }
                  }
                  ($lines -join [System.Environment]::NewLine) + [System.Environment]::NewLine
                </ScriptBlock>
              </ExpressionBinding>
            </CustomItem>
          </CustomEntry>
        </CustomEntries>
      </CustomControl>
    </View>
    <View>
      <Name>SCuBA.Permissions</Name>
      <ViewSelectedBy>
        <TypeName>SCuBA.Permissions</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <PropertyName>AppID</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>Status</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>FixPermissionIssues</PropertyName>
                <ItemSelectionCondition>
                  <ScriptBlock>$null -ne $_.PSObject.Properties['FixPermissionIssues']</ScriptBlock>
                </ItemSelectionCondition>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
  </ViewDefinitions>
</Configuration>