mirror of
https://github.com/coder/coder.git
synced 2025-07-09 11:45:56 +00:00
Use new table formatter everywhere (#3544)
This commit is contained in:
@ -5,12 +5,10 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/coder/coder/cli/cliui"
|
||||
"github.com/jedib0t/go-pretty/v6/table"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/cli/cliui"
|
||||
"github.com/coder/coder/codersdk"
|
||||
)
|
||||
|
||||
@ -38,10 +36,6 @@ func featuresList() *cobra.Command {
|
||||
Use: "list",
|
||||
Aliases: []string{"ls"},
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
err := cliui.ValidateColumns(featureColumns, columns)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
client, err := createClient(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -54,11 +48,14 @@ func featuresList() *cobra.Command {
|
||||
out := ""
|
||||
switch outputFormat {
|
||||
case "table", "":
|
||||
out = displayFeatures(columns, entitlements.Features)
|
||||
out, err = displayFeatures(columns, entitlements.Features)
|
||||
if err != nil {
|
||||
return xerrors.Errorf("render table: %w", err)
|
||||
}
|
||||
case "json":
|
||||
outBytes, err := json.Marshal(entitlements)
|
||||
if err != nil {
|
||||
return xerrors.Errorf("marshal users to JSON: %w", err)
|
||||
return xerrors.Errorf("marshal features to JSON: %w", err)
|
||||
}
|
||||
|
||||
out = string(outBytes)
|
||||
@ -78,35 +75,28 @@ func featuresList() *cobra.Command {
|
||||
return cmd
|
||||
}
|
||||
|
||||
type featureRow struct {
|
||||
Name string `table:"name"`
|
||||
Entitlement string `table:"entitlement"`
|
||||
Enabled bool `table:"enabled"`
|
||||
Limit *int64 `table:"limit"`
|
||||
Actual *int64 `table:"actual"`
|
||||
}
|
||||
|
||||
// displayFeatures will return a table displaying all features passed in.
|
||||
// filterColumns must be a subset of the feature fields and will determine which
|
||||
// columns to display
|
||||
func displayFeatures(filterColumns []string, features map[string]codersdk.Feature) string {
|
||||
tableWriter := cliui.Table()
|
||||
header := table.Row{}
|
||||
for _, h := range featureColumns {
|
||||
header = append(header, h)
|
||||
}
|
||||
tableWriter.AppendHeader(header)
|
||||
tableWriter.SetColumnConfigs(cliui.FilterTableColumns(header, filterColumns))
|
||||
tableWriter.SortBy([]table.SortBy{{
|
||||
Name: "username",
|
||||
}})
|
||||
func displayFeatures(filterColumns []string, features map[string]codersdk.Feature) (string, error) {
|
||||
rows := make([]featureRow, 0, len(features))
|
||||
for name, feat := range features {
|
||||
tableWriter.AppendRow(table.Row{
|
||||
name,
|
||||
feat.Entitlement,
|
||||
feat.Enabled,
|
||||
intOrNil(feat.Limit),
|
||||
intOrNil(feat.Actual),
|
||||
rows = append(rows, featureRow{
|
||||
Name: name,
|
||||
Entitlement: string(feat.Entitlement),
|
||||
Enabled: feat.Enabled,
|
||||
Limit: feat.Limit,
|
||||
Actual: feat.Actual,
|
||||
})
|
||||
}
|
||||
return tableWriter.Render()
|
||||
}
|
||||
|
||||
func intOrNil(i *int64) string {
|
||||
if i == nil {
|
||||
return ""
|
||||
}
|
||||
return fmt.Sprintf("%d", *i)
|
||||
return cliui.DisplayTable(rows, "name", filterColumns)
|
||||
}
|
||||
|
Reference in New Issue
Block a user