Skip to content

Commit 678ee22

Browse files
author
Devansh Thakur
committed
minor refactors and improvements
1 parent 0492dca commit 678ee22

File tree

12 files changed

+31
-347
lines changed

12 files changed

+31
-347
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ require (
2121
github.com/stackitcloud/stackit-sdk-go/services/dns v0.17.1
2222
github.com/stackitcloud/stackit-sdk-go/services/git v0.9.0
2323
github.com/stackitcloud/stackit-sdk-go/services/iaas v1.2.0
24+
github.com/stackitcloud/stackit-sdk-go/services/intake v0.2.0
2425
github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.5.2
2526
github.com/stackitcloud/stackit-sdk-go/services/opensearch v0.24.1
2627
github.com/stackitcloud/stackit-sdk-go/services/postgresflex v1.2.1
@@ -181,7 +182,6 @@ require (
181182
github.com/sonatard/noctx v0.1.0 // indirect
182183
github.com/sourcegraph/go-diff v0.7.0 // indirect
183184
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
184-
github.com/stackitcloud/stackit-sdk-go/services/intake v0.2.0 // indirect
185185
github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect
186186
github.com/stretchr/objx v0.5.2 // indirect
187187
github.com/stretchr/testify v1.11.1 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,8 @@ github.com/stackitcloud/stackit-sdk-go/services/git v0.9.0 h1:zuoJnsLnjxdQcQbs7g
573573
github.com/stackitcloud/stackit-sdk-go/services/git v0.9.0/go.mod h1:AXFfYBJZIW1o0W0zZEb/proQMhMsb3Nn5E1htS8NDPE=
574574
github.com/stackitcloud/stackit-sdk-go/services/iaas v1.2.0 h1:bkvq3Y4OcGyCR5N69tyY7ZTcrVN+htGTa2ZBJL5BQTQ=
575575
github.com/stackitcloud/stackit-sdk-go/services/iaas v1.2.0/go.mod h1:tg1rHvgFRG9gNCYnTepZFaSCBahhLLjkIb3nRbtyjDQ=
576+
github.com/stackitcloud/stackit-sdk-go/services/intake v0.2.0 h1:p/zi4VPoCQWk7/2ubi3hxsqiaye41x/Pl3GXYbPkYOY=
577+
github.com/stackitcloud/stackit-sdk-go/services/intake v0.2.0/go.mod h1:jOArPjNRkwv4487+9ab3dRG+lM09leu5FiRohbQs9Z4=
576578
github.com/stackitcloud/stackit-sdk-go/services/kms v1.1.0 h1:bgMV+hi/530htdSMAyRBrltR7Czinb56HQBT36wnVMU=
577579
github.com/stackitcloud/stackit-sdk-go/services/kms v1.1.0/go.mod h1:QswbIN9TUYELIwkjO+Bu8Nk/FGcd3kZYDlf2n0PdFAk=
578580
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.6.0 h1:q33ZaCBVEBUsnMDxYyuJKtJvGcE5nKgvuPed3s8zXNI=

internal/cmd/beta/intake/runner/create/create.go

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ package create
22

33
import (
44
"context"
5-
"encoding/json"
65
"fmt"
76

8-
"github.com/goccy/go-yaml"
97
"github.com/spf13/cobra"
108
"github.com/stackitcloud/stackit-sdk-go/services/intake"
119

@@ -156,29 +154,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *intake.APIC
156154
}
157155

158156
func outputResult(p *print.Printer, outputFormat, projectLabel string, resp *intake.IntakeRunnerResponse) error {
159-
switch outputFormat {
160-
case print.JSONOutputFormat:
161-
details, err := json.MarshalIndent(resp, "", " ")
162-
if err != nil {
163-
return fmt.Errorf("marshal instance: %w", err)
164-
}
165-
p.Outputln(string(details))
166-
167-
return nil
168-
case print.YAMLOutputFormat:
169-
details, err := yaml.MarshalWithOptions(resp, yaml.IndentSequence(true), yaml.UseJSONMarshaler())
170-
if err != nil {
171-
return fmt.Errorf("marshal instance: %w", err)
172-
}
173-
p.Outputln(string(details))
174-
175-
return nil
176-
default:
157+
return p.OutputResult(outputFormat, resp, func() error {
177158
if resp == nil {
178159
p.Outputf("Created Intake Runner for project %q, but no runner ID was returned.\n", projectLabel)
179160
return nil
180161
}
181162
p.Outputf("Created Intake Runner for project %q. Runner ID: %s\n", projectLabel, utils.PtrString(resp.Id))
182163
return nil
183-
}
164+
})
184165
}

internal/cmd/beta/intake/runner/create/create_test.go

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import (
77
"github.com/google/go-cmp/cmp"
88
"github.com/google/go-cmp/cmp/cmpopts"
99
"github.com/google/uuid"
10+
"github.com/spf13/cobra"
1011
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
1112
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1213
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
14+
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
1315
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1416
"github.com/stackitcloud/stackit-sdk-go/services/intake"
1517
)
@@ -101,6 +103,7 @@ func fixtureRequest(mods ...func(request *intake.ApiCreateIntakeRunnerRequest))
101103
func TestParseInput(t *testing.T) {
102104
tests := []struct {
103105
description string
106+
argValues []string
104107
flagValues map[string]string
105108
isValid bool
106109
expectedModel *inputModel
@@ -170,46 +173,10 @@ func TestParseInput(t *testing.T) {
170173

171174
for _, tt := range tests {
172175
t.Run(tt.description, func(t *testing.T) {
173-
p := print.NewPrinter()
174-
cmd := NewCreateCmd(&params.CmdParams{Printer: p})
175-
err := globalflags.Configure(cmd.Flags())
176-
if err != nil {
177-
t.Fatalf("configure global flags: %v", err)
178-
}
179-
180-
for flag, value := range tt.flagValues {
181-
err := cmd.Flags().Set(flag, value)
182-
if err != nil {
183-
if !tt.isValid {
184-
return
185-
}
186-
t.Fatalf("setting flag --%s=%s: %v", flag, value, err)
187-
}
188-
}
189-
190-
err = cmd.ValidateRequiredFlags()
191-
if err != nil {
192-
if !tt.isValid {
193-
return
194-
}
195-
t.Fatalf("error validating flags: %v", err)
196-
}
197-
198-
model, err := parseInput(p, cmd)
199-
if err != nil {
200-
if !tt.isValid {
201-
return
202-
}
203-
t.Fatalf("error parsing flags: %v", err)
204-
}
205-
206-
if !tt.isValid {
207-
t.Fatalf("did not fail on invalid input")
208-
}
209-
diff := cmp.Diff(model, tt.expectedModel)
210-
if diff != "" {
211-
t.Fatalf("Data does not match: %s", diff)
176+
parseInputWrapper := func(p *print.Printer, cmd *cobra.Command, arg []string) (*inputModel, error) {
177+
return parseInput(p, cmd)
212178
}
179+
testutils.TestParseInput(t, NewCreateCmd, parseInputWrapper, tt.expectedModel, tt.argValues, tt.flagValues, tt.isValid)
213180
})
214181
}
215182
}

internal/cmd/beta/intake/runner/delete/delete_test.go

Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ import (
77
"github.com/google/go-cmp/cmp"
88
"github.com/google/go-cmp/cmp/cmpopts"
99
"github.com/google/uuid"
10-
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
1110
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
12-
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
11+
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
1312
"github.com/stackitcloud/stackit-sdk-go/services/intake"
1413
)
1514

@@ -122,54 +121,7 @@ func TestParseInput(t *testing.T) {
122121

123122
for _, tt := range tests {
124123
t.Run(tt.description, func(t *testing.T) {
125-
p := print.NewPrinter()
126-
cmd := NewDeleteCmd(&params.CmdParams{Printer: p})
127-
err := globalflags.Configure(cmd.Flags())
128-
if err != nil {
129-
t.Fatalf("configure global flags: %v", err)
130-
}
131-
132-
for flag, value := range tt.flagValues {
133-
err := cmd.Flags().Set(flag, value)
134-
if err != nil {
135-
if !tt.isValid {
136-
return
137-
}
138-
t.Fatalf("setting flag --%s=%s: %v", flag, value, err)
139-
}
140-
}
141-
142-
err = cmd.ValidateArgs(tt.argValues)
143-
if err != nil {
144-
if !tt.isValid {
145-
return
146-
}
147-
t.Fatalf("error validating args: %v", err)
148-
}
149-
150-
err = cmd.ValidateRequiredFlags()
151-
if err != nil {
152-
if !tt.isValid {
153-
return
154-
}
155-
t.Fatalf("error validating flags: %v", err)
156-
}
157-
158-
model, err := parseInput(p, cmd, tt.argValues)
159-
if err != nil {
160-
if !tt.isValid {
161-
return
162-
}
163-
t.Fatalf("error parsing input: %v", err)
164-
}
165-
166-
if !tt.isValid {
167-
t.Fatalf("did not fail on invalid input")
168-
}
169-
diff := cmp.Diff(model, tt.expectedModel)
170-
if diff != "" {
171-
t.Fatalf("Data does not match: %s", diff)
172-
}
124+
testutils.TestParseInput(t, NewDeleteCmd, parseInput, tt.expectedModel, tt.argValues, tt.flagValues, tt.isValid)
173125
})
174126
}
175127
}

internal/cmd/beta/intake/runner/describe/describe.go

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ package describe
22

33
import (
44
"context"
5-
"encoding/json"
65
"fmt"
76

8-
"github.com/goccy/go-yaml"
97
"github.com/spf13/cobra"
108
"github.com/stackitcloud/stackit-sdk-go/services/intake"
119

@@ -97,25 +95,7 @@ func outputResult(p *print.Printer, outputFormat string, runner *intake.IntakeRu
9795
if runner == nil {
9896
return fmt.Errorf("received nil runner, could not display details")
9997
}
100-
101-
switch outputFormat {
102-
case print.JSONOutputFormat:
103-
details, err := json.MarshalIndent(runner, "", " ")
104-
if err != nil {
105-
return fmt.Errorf("marshal Intake Runner: %w", err)
106-
}
107-
p.Outputln(string(details))
108-
return nil
109-
110-
case print.YAMLOutputFormat:
111-
details, err := yaml.MarshalWithOptions(runner, yaml.IndentSequence(true), yaml.UseJSONMarshaler())
112-
if err != nil {
113-
return fmt.Errorf("marshal Intake Runner: %w", err)
114-
}
115-
p.Outputln(string(details))
116-
return nil
117-
118-
default:
98+
return p.OutputResult(outputFormat, runner, func() error {
11999
table := tables.NewTable()
120100
table.SetHeader("Attribute", "Value")
121101
table.AddRow("ID", runner.GetId())
@@ -133,5 +113,5 @@ func outputResult(p *print.Printer, outputFormat string, runner *intake.IntakeRu
133113
return fmt.Errorf("render table: %w", err)
134114
}
135115
return nil
136-
}
116+
})
137117
}

internal/cmd/beta/intake/runner/describe/describe_test.go

Lines changed: 2 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
1111
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1212
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
13+
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
1314
"github.com/stackitcloud/stackit-sdk-go/services/intake"
1415
)
1516

@@ -115,54 +116,7 @@ func TestParseInput(t *testing.T) {
115116

116117
for _, tt := range tests {
117118
t.Run(tt.description, func(t *testing.T) {
118-
p := print.NewPrinter()
119-
cmd := NewDescribeCmd(&params.CmdParams{Printer: p})
120-
err := globalflags.Configure(cmd.Flags())
121-
if err != nil {
122-
t.Fatalf("configure global flags: %v", err)
123-
}
124-
125-
for flag, value := range tt.flagValues {
126-
err := cmd.Flags().Set(flag, value)
127-
if err != nil {
128-
if !tt.isValid {
129-
return
130-
}
131-
t.Fatalf("setting flag --%s=%s: %v", flag, value, err)
132-
}
133-
}
134-
135-
err = cmd.ValidateArgs(tt.argValues)
136-
if err != nil {
137-
if !tt.isValid {
138-
return
139-
}
140-
t.Fatalf("error validating args: %v", err)
141-
}
142-
143-
err = cmd.ValidateRequiredFlags()
144-
if err != nil {
145-
if !tt.isValid {
146-
return
147-
}
148-
t.Fatalf("error validating flags: %v", err)
149-
}
150-
151-
model, err := parseInput(p, cmd, tt.argValues)
152-
if err != nil {
153-
if !tt.isValid {
154-
return
155-
}
156-
t.Fatalf("error parsing input: %v", err)
157-
}
158-
159-
if !tt.isValid {
160-
t.Fatalf("did not fail on invalid input")
161-
}
162-
diff := cmp.Diff(model, tt.expectedModel)
163-
if diff != "" {
164-
t.Fatalf("Data does not match: %s", diff)
165-
}
119+
testutils.TestParseInput(t, NewDescribeCmd, parseInput, tt.expectedModel, tt.argValues, tt.flagValues, tt.isValid)
166120
})
167121
}
168122
}

internal/cmd/beta/intake/runner/list/list.go

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ package list
22

33
import (
44
"context"
5-
"encoding/json"
65
"fmt"
76

8-
"github.com/goccy/go-yaml"
97
"github.com/spf13/cobra"
108
"github.com/stackitcloud/stackit-cli/internal/cmd/params"
119
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
@@ -129,24 +127,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *intake.APIC
129127

130128
// outputResult formats the API response and prints it to the console
131129
func outputResult(p *print.Printer, outputFormat, projectLabel string, runners []intake.IntakeRunnerResponse) error {
132-
switch outputFormat {
133-
case print.JSONOutputFormat:
134-
details, err := json.MarshalIndent(runners, "", " ")
135-
if err != nil {
136-
return fmt.Errorf("marshal Intake Runner list: %w", err)
137-
}
138-
p.Outputln(string(details))
139-
return nil
140-
141-
case print.YAMLOutputFormat:
142-
details, err := yaml.MarshalWithOptions(runners, yaml.IndentSequence(true), yaml.UseJSONMarshaler())
143-
if err != nil {
144-
return fmt.Errorf("marshal Intake Runner list: %w", err)
145-
}
146-
p.Outputln(string(details))
147-
return nil
148-
149-
default:
130+
return p.OutputResult(outputFormat, runners, func() error {
150131
if len(runners) == 0 {
151132
p.Outputf("No intake runners found for project %q\n", projectLabel)
152133
return nil
@@ -167,5 +148,5 @@ func outputResult(p *print.Printer, outputFormat, projectLabel string, runners [
167148
return fmt.Errorf("render table: %w", err)
168149
}
169150
return nil
170-
}
151+
})
171152
}

0 commit comments

Comments
 (0)