Skip to content

Commit 2efac7d

Browse files
authored
fix(redis): output valid json on list cmd (#966)
relates to STACKITCLI-242
1 parent 352189b commit 2efac7d

File tree

4 files changed

+32
-23
lines changed

4 files changed

+32
-23
lines changed

internal/cmd/redis/credentials/list/list.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,21 +69,21 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6969
return fmt.Errorf("list Redis credentials: %w", err)
7070
}
7171
credentials := *resp.CredentialsList
72+
73+
// Truncate output
74+
if model.Limit != nil && len(credentials) > int(*model.Limit) {
75+
credentials = credentials[:*model.Limit]
76+
}
77+
78+
instanceLabel := model.InstanceId
7279
if len(credentials) == 0 {
73-
instanceLabel, err := redisUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
80+
instanceLabel, err = redisUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
7481
if err != nil {
7582
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
76-
instanceLabel = model.InstanceId
7783
}
78-
params.Printer.Info("No credentials found for instance %q\n", instanceLabel)
79-
return nil
8084
}
8185

82-
// Truncate output
83-
if model.Limit != nil && len(credentials) > int(*model.Limit) {
84-
credentials = credentials[:*model.Limit]
85-
}
86-
return outputResult(params.Printer, model.OutputFormat, credentials)
86+
return outputResult(params.Printer, model.OutputFormat, instanceLabel, credentials)
8787
},
8888
}
8989
configureFlags(cmd)
@@ -135,7 +135,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *redis.APICl
135135
return req
136136
}
137137

138-
func outputResult(p *print.Printer, outputFormat string, credentials []redis.CredentialsListItem) error {
138+
func outputResult(p *print.Printer, outputFormat, instanceLabel string, credentials []redis.CredentialsListItem) error {
139139
switch outputFormat {
140140
case print.JSONOutputFormat:
141141
details, err := json.MarshalIndent(credentials, "", " ")
@@ -154,6 +154,11 @@ func outputResult(p *print.Printer, outputFormat string, credentials []redis.Cre
154154

155155
return nil
156156
default:
157+
if len(credentials) == 0 {
158+
p.Outputf("No credentials found for instance %q\n", instanceLabel)
159+
return nil
160+
}
161+
157162
table := tables.NewTable()
158163
table.SetHeader("ID")
159164
for i := range credentials {

internal/cmd/redis/credentials/list/list_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ func Test_outputResult(t *testing.T) {
238238
p.Cmd = NewCmd(&params.CmdParams{Printer: p})
239239
for _, tt := range tests {
240240
t.Run(tt.name, func(t *testing.T) {
241-
if err := outputResult(p, tt.args.outputFormat, tt.args.credentials); (err != nil) != tt.wantErr {
241+
if err := outputResult(p, tt.args.outputFormat, "dummy-instance-label", tt.args.credentials); (err != nil) != tt.wantErr {
242242
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
243243
}
244244
})

internal/cmd/redis/instance/list/list.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,22 +67,21 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6767
return fmt.Errorf("get Redis instances: %w", err)
6868
}
6969
instances := *resp.Instances
70-
if len(instances) == 0 {
71-
projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
72-
if err != nil {
73-
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
74-
projectLabel = model.ProjectId
75-
}
76-
params.Printer.Info("No instances found for project %q\n", projectLabel)
77-
return nil
78-
}
7970

8071
// Truncate output
8172
if model.Limit != nil && len(instances) > int(*model.Limit) {
8273
instances = instances[:*model.Limit]
8374
}
8475

85-
return outputResult(params.Printer, model.OutputFormat, instances)
76+
projectLabel := model.ProjectId
77+
if len(instances) == 0 {
78+
projectLabel, err = projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
79+
if err != nil {
80+
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
81+
}
82+
}
83+
84+
return outputResult(params.Printer, model.OutputFormat, projectLabel, instances)
8685
},
8786
}
8887

@@ -130,7 +129,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *redis.APICl
130129
return req
131130
}
132131

133-
func outputResult(p *print.Printer, outputFormat string, instances []redis.Instance) error {
132+
func outputResult(p *print.Printer, outputFormat, projectLabel string, instances []redis.Instance) error {
134133
switch outputFormat {
135134
case print.JSONOutputFormat:
136135
details, err := json.MarshalIndent(instances, "", " ")
@@ -149,6 +148,11 @@ func outputResult(p *print.Printer, outputFormat string, instances []redis.Insta
149148

150149
return nil
151150
default:
151+
if len(instances) == 0 {
152+
p.Outputf("No instances found for project %q\n", projectLabel)
153+
return nil
154+
}
155+
152156
table := tables.NewTable()
153157
table.SetHeader("ID", "NAME", "LAST OPERATION TYPE", "LAST OPERATION STATE")
154158
for i := range instances {

internal/cmd/redis/instance/list/list_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ func Test_outputResult(t *testing.T) {
216216
p.Cmd = NewCmd(&params.CmdParams{Printer: p})
217217
for _, tt := range tests {
218218
t.Run(tt.name, func(t *testing.T) {
219-
if err := outputResult(p, tt.args.outputFormat, tt.args.instances); (err != nil) != tt.wantErr {
219+
if err := outputResult(p, tt.args.outputFormat, "dummy-project-label", tt.args.instances); (err != nil) != tt.wantErr {
220220
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
221221
}
222222
})

0 commit comments

Comments
 (0)