Skip to content

Commit 6045ca9

Browse files
authored
Use slices.Backward and slices.Reverse for reverse iteration (#4953)
## Summary - Replace manual `for i := len(s) - 1; i >= 0; i--` loops with `slices.Backward` (4 sites) - Replace manual swap-based reversals with `slices.Reverse` (2 sites) - Simplify `commandString` by reversing in place instead of copying to a new slice ## Test plan - [x] `go build ./...` - [x] `go test` passes for all 6 affected packages This pull request was AI-assisted by Isaac.
1 parent f5003e0 commit 6045ca9

6 files changed

Lines changed: 17 additions & 23 deletions

File tree

bundle/run/pipeline.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"errors"
66
"fmt"
7+
"slices"
78
"time"
89

910
"github.com/databricks/cli/bundle"
@@ -63,10 +64,9 @@ func (r *pipelineRunner) logErrorEvent(ctx context.Context, pipelineId, updateId
6364
return err
6465
}
6566
updateEvents := filterEventsByUpdateId(events, updateId)
66-
// The events API returns most recent events first. We iterate in a reverse order
67-
// to print the events chronologically
68-
for i := len(updateEvents) - 1; i >= 0; i-- {
69-
r.logEvent(ctx, updateEvents[i])
67+
// The events API returns most recent events first.
68+
for _, event := range slices.Backward(updateEvents) {
69+
r.logEvent(ctx, event)
7070
}
7171
return nil
7272
}

bundle/run/progress/pipeline.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package progress
33
import (
44
"context"
55
"fmt"
6+
"slices"
67
"strings"
78

89
"github.com/databricks/databricks-sdk-go"
@@ -83,9 +84,8 @@ func (l *UpdateTracker) Events(ctx context.Context) ([]ProgressEvent, error) {
8384
}
8485

8586
var result []ProgressEvent
86-
// we iterate in reverse to return events in chronological order
87-
for i := len(events) - 1; i >= 0; i-- {
88-
event := events[i]
87+
// Return events in chronological order.
88+
for _, event := range slices.Backward(events) {
8989
// filter to only include update_progress and flow_progress events
9090
if event.EventType == "flow_progress" || event.EventType == "update_progress" {
9191
result = append(result, ProgressEvent(event))

cmd/apps/init.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1404,8 +1404,8 @@ func removeEmptyDirs(root string) error {
14041404
if err != nil {
14051405
return err
14061406
}
1407-
for i := len(dirs) - 1; i >= 0; i-- {
1408-
_ = os.Remove(dirs[i])
1407+
for _, dir := range slices.Backward(dirs) {
1408+
_ = os.Remove(dir)
14091409
}
14101410
return nil
14111411
}

cmd/root/user_agent_command.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package root
22

33
import (
44
"context"
5+
"slices"
56
"strings"
67

78
"github.com/databricks/databricks-sdk-go/useragent"
@@ -24,12 +25,8 @@ func commandString(cmd *cobra.Command) string {
2425
reversed = append(reversed, p.Name())
2526
})
2627

27-
ordered := make([]string, 0, len(reversed))
28-
for i := len(reversed) - 1; i >= 0; i-- {
29-
ordered = append(ordered, reversed[i])
30-
}
31-
32-
return strings.Join(ordered, commandSeparator)
28+
slices.Reverse(reversed)
29+
return strings.Join(reversed, commandSeparator)
3330
}
3431

3532
func withCommandInUserAgent(ctx context.Context, cmd *cobra.Command) context.Context {

libs/dagrun/dagrun.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package dagrun
22

33
import (
44
"fmt"
5+
"slices"
56
"strings"
67
"sync"
78
)
@@ -129,12 +130,8 @@ func (g *Graph) DetectCycle() error {
129130
break
130131
}
131132
}
132-
for i, j := 0, len(nodes)-1; i < j; i, j = i+1, j-1 {
133-
nodes[i], nodes[j] = nodes[j], nodes[i]
134-
}
135-
for i, j := 0, len(edges)-1; i < j; i, j = i+1, j-1 {
136-
edges[i], edges[j] = edges[j], edges[i]
137-
}
133+
slices.Reverse(nodes)
134+
slices.Reverse(edges)
138135
edges = append(edges, closeLbl)
139136
return &CycleError{Nodes: nodes, Edges: edges}
140137
}

libs/filer/files_client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,8 @@ func (w *FilesClient) recursiveDelete(ctx context.Context, name string) error {
326326
// Delete the directories in reverse order to ensure that the parent
327327
// directories are deleted after the children. This is possible because
328328
// fs.WalkDir walks the directories in lexicographical order.
329-
for i := len(dirsToDelete) - 1; i >= 0; i-- {
330-
err := w.deleteDirectory(ctx, dirsToDelete[i])
329+
for _, dir := range slices.Backward(dirsToDelete) {
330+
err := w.deleteDirectory(ctx, dir)
331331
if err != nil {
332332
return err
333333
}

0 commit comments

Comments
 (0)