gocc/watch.go

44 lines
761 B
Go
Raw Normal View History

2022-08-17 18:16:21 +02:00
package main
import "fmt"
func Watch(ch <-chan *CompileReport, doneCh chan<- struct{}) {
defer close(doneCh)
states := map[*CompileConfig]CompileState{}
for _, cfg := range CompileConfigs {
states[cfg] = StateWaiting
}
cleared := false
for report := range ch {
states[report.Config] = report.State
if !*Silent {
PrintStates(states, cleared)
}
cleared = true
}
doneCh <- struct{}{}
}
func PrintStates(states map[*CompileConfig]CompileState, clear bool) {
if clear {
for i := 0; i < len(CompileConfigs); i++ {
goUp()
clearEOL()
}
}
for _, cfg := range CompileConfigs {
state, ok := states[cfg]
if !ok {
fmt.Println()
continue
}
fmt.Printf("%-16s %s\n", fmt.Sprintf("%s/%s:", cfg.OS, cfg.Arch), state)
}
}