package observer
import (
"github.com/cheggaaa/pb/v3"
"github.com/gitpod-io/gitpod/loadgen/pkg/loadgen"
)
func NewProgressBarObserver(total int) chan<- *loadgen.SessionEvent {
res := make(chan *loadgen.SessionEvent)
tmpl := `{{ green "spinning up:" }} {{ bar . "[" "█" (cycle . "↖" "↗" "↘" "↙" ) " " "]"}} {{speed . }} {{counters . "%s/%s"}}`
bar := pb.ProgressBarTemplate(tmpl).New(total)
go func() {
defer bar.Finish()
for evt := range res {
if evt.Kind != loadgen.SessionWorkspaceStart {
continue
}
bar.Increment()
bar.Write()
}
}()
return res
}