@@ -51,8 +51,8 @@ type Printer struct {
5151func (p * Printer ) Wait () error {
5252 p .closeOnce .Do (func () {
5353 close (p .status )
54- <- p .done
5554 })
55+ <- p .done
5656 return p .err
5757}
5858
@@ -144,6 +144,7 @@ func NewPrinter(ctx context.Context, out console.File, mode progressui.DisplayMo
144144 interrupt : make (chan interruptRequest ),
145145 state : printerStateRunning ,
146146 done : make (chan struct {}),
147+ metrics : opt .mw ,
147148 }
148149 go pw .run (ctx , d )
149150
@@ -155,21 +156,21 @@ func (p *Printer) run(ctx context.Context, d progressui.Display) {
155156 defer close (p .interrupt )
156157
157158 var ss []* client.SolveStatus
158- for p . state != printerStateDone {
159+ for {
159160 switch p .state {
160161 case printerStatePaused :
161162 ss , p .err = p .bufferDisplay (ctx , ss )
162163 case printerStateRunning :
163- var warnings []client.VertexWarning
164- warnings , ss , p .err = p .updateDisplay (ctx , d , ss )
165- p .warnings = append (p .warnings , warnings ... )
166-
167- d , _ = p .newDisplay ()
164+ p .warnings , ss , p .err = p .updateDisplay (ctx , d , ss )
165+ if p .opt .onclose != nil {
166+ p .opt .onclose ()
167+ }
168168 }
169- }
170169
171- if p .opt .onclose != nil {
172- p .opt .onclose ()
170+ if p .state == printerStateDone {
171+ break
172+ }
173+ d , _ = p .newDisplay ()
173174 }
174175}
175176
0 commit comments