Skip to content

Commit 94c67ba

Browse files
committed
refactor: fix modernize.stringsbuilder lint issues
Signed-off-by: Oleksandr Redko <[email protected]>
1 parent 2308c29 commit 94c67ba

File tree

6 files changed

+58
-44
lines changed

6 files changed

+58
-44
lines changed

.golangci.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ linters:
7575
modernize:
7676
disable:
7777
- omitzero
78-
- stringsbuilder
7978
perfsprint:
8079
int-conversion: false
8180
err-error: false

cmd/limactl/editflags/editflags.go

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -155,36 +155,29 @@ func BuildPortForwardExpression(portForwards []string) (string, error) {
155155
return "", nil
156156
}
157157

158-
expr := `.portForwards += [`
158+
ports := make([]string, len(portForwards))
159159
for i, spec := range portForwards {
160160
hostPort, guestPort, isStatic, err := ParsePortForward(spec)
161161
if err != nil {
162162
return "", err
163163
}
164-
expr += fmt.Sprintf(`{"guestPort": %q, "hostPort": %q, "static": %v}`, guestPort, hostPort, isStatic)
165-
if i < len(portForwards)-1 {
166-
expr += ","
167-
}
164+
ports[i] = fmt.Sprintf(`{"guestPort": %q, "hostPort": %q, "static": %v}`, guestPort, hostPort, isStatic)
168165
}
169-
expr += `]`
166+
expr := fmt.Sprintf(".portForwards += [%s]", strings.Join(ports, ","))
170167
return expr, nil
171168
}
172169

173170
func buildMountListExpression(ss []string) (string, error) {
174-
expr := `[`
171+
mounts := make([]string, len(ss))
175172
for i, s := range ss {
176173
writable := strings.HasSuffix(s, ":w")
177-
loc := strings.TrimSuffix(s, ":w")
178-
loc, err := localpathutil.Expand(loc)
174+
loc, err := localpathutil.Expand(strings.TrimSuffix(s, ":w"))
179175
if err != nil {
180176
return "", err
181177
}
182-
expr += fmt.Sprintf(`{"location": %q, "mountPoint": %q, "writable": %v}`, loc, loc, writable)
183-
if i < len(ss)-1 {
184-
expr += ","
185-
}
178+
mounts[i] = fmt.Sprintf(`{"location": %q, "mountPoint": %q, "writable": %v}`, loc, loc, writable)
186179
}
187-
expr += `]`
180+
expr := fmt.Sprintf("[%s]", strings.Join(mounts, ","))
188181
return expr, nil
189182
}
190183

@@ -206,14 +199,11 @@ func YQExpressions(flags *flag.FlagSet, newInstance bool) ([]string, error) {
206199
if err != nil {
207200
return nil, err
208201
}
209-
expr := `.dns += [`
202+
ips := make([]string, len(ipSlice))
210203
for i, ip := range ipSlice {
211-
expr += fmt.Sprintf("%q", ip)
212-
if i < len(ipSlice)-1 {
213-
expr += ","
214-
}
204+
ips[i] = `"` + ip.String() + `"`
215205
}
216-
expr += `] | .dns |= unique | .hostResolver.enabled=false`
206+
expr := fmt.Sprintf(".dns += [%s] | .dns |= unique | .hostResolver.enabled=false", strings.Join(ips, ","))
217207
logrus.Warnf("Disabling HostResolver, as custom DNS addresses (%v) are specified", ipSlice)
218208
return []string{expr}, nil
219209
},
@@ -293,23 +283,20 @@ func YQExpressions(flags *flag.FlagSet, newInstance bool) ([]string, error) {
293283
if err != nil {
294284
return nil, err
295285
}
296-
expr := `.networks += [`
286+
networks := make([]string, len(ss))
297287
for i, s := range ss {
298288
// CLI syntax is still experimental (YAML syntax is out of experimental)
299289
switch {
300290
case s == "vzNAT":
301-
expr += `{"vzNAT": true}`
291+
networks[i] = `{"vzNAT": true}`
302292
case strings.HasPrefix(s, "lima:"):
303293
network := strings.TrimPrefix(s, "lima:")
304-
expr += fmt.Sprintf(`{"lima": %q}`, network)
294+
networks[i] = fmt.Sprintf(`{"lima": %q}`, network)
305295
default:
306-
return nil, fmt.Errorf("network name must be \"vzNAT\" or \"lima:*\", got %q", s)
307-
}
308-
if i < len(ss)-1 {
309-
expr += ","
296+
return nil, fmt.Errorf(`network name must be "vzNAT" or "lima:*", got %q`, s)
310297
}
311298
}
312-
expr += `] | .networks |= unique_by(.lima)`
299+
expr := fmt.Sprintf(`.networks += [%s] | .networks |= unique_by(.lima)`, strings.Join(networks, ","))
313300
return []string{expr}, nil
314301
},
315302
false,

cmd/limactl/editflags/editflags_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,36 @@ func TestYQExpressions(t *testing.T) {
195195
newInstance: false,
196196
expectError: "flag `--mount` conflicts with `--mount-only`",
197197
},
198+
{
199+
name: "dns",
200+
args: []string{"--dns", "8.8.8.8", "--dns", "8.8.4.4", "--dns", "1.1.1.1"},
201+
newInstance: false,
202+
expected: []string{`.dns += ["8.8.8.8","8.8.4.4","1.1.1.1"] | .dns |= unique | .hostResolver.enabled=false`},
203+
},
204+
{
205+
name: "network vzNAT",
206+
args: []string{"--network", "vzNAT"},
207+
newInstance: true,
208+
expected: []string{`.networks += [{"vzNAT": true}] | .networks |= unique_by(.lima)`},
209+
},
210+
{
211+
name: "network lima:shared",
212+
args: []string{"--network", "lima:shared"},
213+
newInstance: true,
214+
expected: []string{`.networks += [{"lima": "shared"}] | .networks |= unique_by(.lima)`},
215+
},
216+
{
217+
name: "multiple networks",
218+
args: []string{"--network", "vzNAT", "--network", "lima:shared", "--network", "lima:bridged"},
219+
newInstance: true,
220+
expected: []string{`.networks += [{"vzNAT": true},{"lima": "shared"},{"lima": "bridged"}] | .networks |= unique_by(.lima)`},
221+
},
222+
{
223+
name: "invalid network",
224+
args: []string{"--network", "invalid"},
225+
newInstance: true,
226+
expectError: `network name must be "vzNAT" or "lima:*", got "invalid"`,
227+
},
198228
}
199229
for _, tt := range tests {
200230
t.Run(tt.name, func(t *testing.T) {

cmd/limactl/network.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,11 @@ func networkDeleteAction(cmd *cobra.Command, args []string) error {
256256
// Because the command currently does not check whether the network being removed is in use
257257
}
258258

259-
var yq string
259+
networks := make([]string, len(args))
260260
for i, name := range args {
261-
yq += fmt.Sprintf("del(.networks.%q)", name)
262-
if i < len(args)-1 {
263-
yq += " | "
264-
}
261+
networks[i] = fmt.Sprintf("del(.networks.%q)", name)
265262
}
263+
yq := strings.Join(networks, " | ")
266264
return networkApplyYQ(yq)
267265
}
268266

pkg/editutil/editutil.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@ func fileWarning(filename string) string {
2424
if err != nil || len(b) == 0 {
2525
return ""
2626
}
27-
s := "# WARNING: " + filename + " includes the following settings,\n"
28-
s += "# which are applied before applying this YAML:\n"
29-
s += "# -----------\n"
27+
var sb strings.Builder
28+
sb.WriteString("# WARNING: " + filename + " includes the following settings,\n")
29+
sb.WriteString("# which are applied before applying this YAML:\n")
30+
sb.WriteString("# -----------\n")
3031
for line := range strings.SplitSeq(strings.TrimSuffix(string(b), "\n"), "\n") {
31-
s += "#"
32+
sb.WriteByte('#')
3233
if line != "" {
33-
s += " " + line
34+
sb.WriteString(" " + line)
3435
}
35-
s += "\n"
36+
sb.WriteByte('\n')
3637
}
37-
s += "# -----------\n"
38-
s += "\n"
39-
return s
38+
sb.WriteString("# -----------\n\n")
39+
return sb.String()
4040
}
4141

4242
// GenerateEditorWarningHeader generates the editor warning header.

pkg/hostagent/hostagent.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ func (a *HostAgent) startHostAgentRoutines(ctx context.Context) error {
500500
msg := "Running in plain mode. Mounts, dynamic port forwarding, containerd, etc. will be ignored. Guest agent will not be running."
501501
for _, port := range a.instConfig.PortForwards {
502502
if port.Static {
503-
msg += " Static port forwarding is allowed."
503+
msg += " Static port forwarding is allowed." //nolint:modernize // stringsbuilder is not needed
504504
break
505505
}
506506
}

0 commit comments

Comments
 (0)