Skip to content

Commit 5f3fd1c

Browse files
committed
fix: convert the rest of existing empty handling
1 parent f4d2677 commit 5f3fd1c

19 files changed

+92
-57
lines changed

cli/cliui/output.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,6 @@ func (f *tableFormat) AttachOptions(opts *serpent.OptionSet) {
153153

154154
// Format implements OutputFormat.
155155
func (f *tableFormat) Format(_ context.Context, data any) (string, error) {
156-
// Return empty string for empty data. Callers should check for this
157-
// and provide an appropriate message to the user.
158-
v := reflect.Indirect(reflect.ValueOf(data))
159-
if v.Kind() == reflect.Slice && v.Len() == 0 {
160-
return "", nil
161-
}
162-
163156
headers := make(table.Row, len(f.allColumns))
164157
for i, header := range f.allColumns {
165158
headers[i] = header

cli/cliui/output_test.go

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -136,24 +136,3 @@ func Test_OutputFormatter(t *testing.T) {
136136
require.EqualValues(t, 2, atomic.LoadInt64(&called))
137137
})
138138
}
139-
140-
type tableFormatTestRow struct {
141-
Name string `table:"name,default_sort"`
142-
Age int `table:"age"`
143-
}
144-
145-
func Test_TableFormat_EmptyData(t *testing.T) {
146-
t.Parallel()
147-
148-
f := cliui.NewOutputFormatter(
149-
cliui.TableFormat([]tableFormatTestRow{}, nil),
150-
cliui.JSONFormat(),
151-
)
152-
153-
ctx := context.Background()
154-
var emptyData []tableFormatTestRow
155-
156-
out, err := f.Format(ctx, emptyData)
157-
require.NoError(t, err)
158-
require.Equal(t, "", out)
159-
}

cli/cliui/table.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ func DisplayTable(out any, sort string, filterColumns []string) (string, error)
180180
func renderTable(out any, sort string, headers table.Row, filterColumns []string) (string, error) {
181181
v := reflect.Indirect(reflect.ValueOf(out))
182182

183+
// Return empty string for empty data. Callers should check for this
184+
// and provide an appropriate message to the user.
185+
if v.Kind() == reflect.Slice && v.Len() == 0 {
186+
return "", nil
187+
}
188+
183189
headers = filterHeaders(headers, filterColumns)
184190
columnConfigs := createColumnConfigs(headers, filterColumns)
185191

cli/cliui/table_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,15 @@ alice 1
472472
require.NoError(t, err)
473473
compareTables(t, expected, out)
474474
})
475+
476+
t.Run("Empty", func(t *testing.T) {
477+
t.Parallel()
478+
479+
var in []tableTest4
480+
out, err := cliui.DisplayTable(in, "", nil)
481+
require.NoError(t, err)
482+
require.Empty(t, out)
483+
})
475484
}
476485

477486
// compareTables normalizes the incoming table lines

cli/organizationmembers.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ func (r *RootCmd) listOrganizationMembers(orgContext *OrganizationContext) *serp
170170
return err
171171
}
172172

173+
if out == "" {
174+
_, _ = fmt.Fprintln(inv.Stderr, "No organization members found.")
175+
return nil
176+
}
177+
173178
_, err = fmt.Fprintln(inv.Stdout, out)
174179
return err
175180
},

cli/organizationroles.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ func (r *RootCmd) showOrganizationRoles(orgContext *OrganizationContext) *serpen
9292
return err
9393
}
9494

95+
if out == "" {
96+
_, _ = fmt.Fprintln(inv.Stderr, "No organization roles found.")
97+
return nil
98+
}
99+
95100
_, err = fmt.Fprintln(inv.Stdout, out)
96101
return err
97102
},

cli/provisionerjobs.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,11 @@ func (r *RootCmd) provisionerJobsList() *serpent.Command {
110110
return xerrors.Errorf("display provisioner daemons: %w", err)
111111
}
112112

113+
if out == "" {
114+
_, _ = fmt.Fprintln(inv.Stderr, "No provisioner jobs found.")
115+
return nil
116+
}
117+
113118
_, _ = fmt.Fprintln(inv.Stdout, out)
114119

115120
return nil

cli/provisioners.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,6 @@ func (r *RootCmd) provisionerList() *serpent.Command {
7474
return xerrors.Errorf("list provisioner daemons: %w", err)
7575
}
7676

77-
if len(daemons) == 0 {
78-
_, _ = fmt.Fprintln(inv.Stdout, "No provisioner daemons found")
79-
return nil
80-
}
81-
8277
var rows []provisionerDaemonRow
8378
for _, daemon := range daemons {
8479
rows = append(rows, provisionerDaemonRow{
@@ -92,6 +87,11 @@ func (r *RootCmd) provisionerList() *serpent.Command {
9287
return xerrors.Errorf("display provisioner daemons: %w", err)
9388
}
9489

90+
if out == "" {
91+
_, _ = fmt.Fprintln(inv.Stderr, "No provisioner daemons found.")
92+
return nil
93+
}
94+
9595
_, _ = fmt.Fprintln(inv.Stdout, out)
9696

9797
return nil

cli/schedule.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ func (r *RootCmd) scheduleShow() *serpent.Command {
129129
return err
130130
}
131131

132+
if out == "" {
133+
_, _ = fmt.Fprintln(inv.Stderr, "No schedules found.")
134+
return nil
135+
}
136+
132137
_, err = fmt.Fprintln(inv.Stdout, out)
133138
return err
134139
},

cli/task_logs.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ func (r *RootCmd) taskLogs() *serpent.Command {
5959
return xerrors.Errorf("format task logs: %w", err)
6060
}
6161

62+
if out == "" {
63+
_, _ = fmt.Fprintln(inv.Stderr, "No task logs found.")
64+
return nil
65+
}
66+
6267
_, _ = fmt.Fprintln(inv.Stdout, out)
6368
return nil
6469
},

0 commit comments

Comments
 (0)