Skip to content

Commit 9be6383

Browse files
authored
fix: watchman detecting changes during incremental BUILD-generation (#118)
### Changes are visible to end-users: no ### Test plan - Covered by existing test cases - Manual testing; make multiple changes in src, once then again while `configure --watch` is still running
1 parent 817e827 commit 9be6383

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

runner/pkg/ibp/client.go

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

33
import (
44
"fmt"
5+
"iter"
56
"slices"
67

78
"github.com/aspect-build/aspect-gazelle/runner/pkg/socket"
@@ -10,7 +11,7 @@ import (
1011
type IncrementalClient interface {
1112
Connect() error
1213
Disconnect() error
13-
AwaitCycle() <-chan CycleSourcesMessage
14+
AwaitCycle() iter.Seq[CycleSourcesMessage]
1415
}
1516

1617
type incClient struct {
@@ -83,11 +84,8 @@ func (c *incClient) Disconnect() error {
8384
return err
8485
}
8586

86-
func (c *incClient) AwaitCycle() <-chan CycleSourcesMessage {
87-
ch := make(chan CycleSourcesMessage)
88-
89-
go func() {
90-
defer close(ch)
87+
func (c *incClient) AwaitCycle() iter.Seq[CycleSourcesMessage] {
88+
return func(yield func(CycleSourcesMessage) bool) {
9189
for {
9290
msg, err := c.socket.Recv()
9391
if err != nil {
@@ -109,22 +107,24 @@ func (c *incClient) AwaitCycle() <-chan CycleSourcesMessage {
109107
CycleId: cycleEvent.CycleId,
110108
})
111109

112-
ch <- cycleEvent
110+
r := yield(cycleEvent)
113111

114112
c.socket.Send(CycleMessage{
115113
Message: Message{
116114
Kind: "CYCLE_COMPLETED",
117115
},
118116
CycleId: cycleEvent.CycleId,
119117
})
118+
119+
if !r {
120+
return
121+
}
120122
} else {
121123
fmt.Printf("Expected CYCLE, received: %v\n", msg)
122124
continue
123125
}
124126
}
125-
}()
126-
127-
return ch
127+
}
128128
}
129129

130130
func convertWireCycle(msg map[string]interface{}) (CycleSourcesMessage, error) {

0 commit comments

Comments
 (0)