func main() { const N int = 10 p := bar.New(N) for i := 0; i < N; i++ { p.ShowProgress(i) time.Sleep(time.Second) } }
func (this *Lags) Run(args []string) (exitCode int) { const secondsInMinute = 60 var ( cluster string zone string ) cmdFlags := flag.NewFlagSet("lags", flag.ContinueOnError) cmdFlags.Usage = func() { this.Ui.Output(this.Help()) } cmdFlags.StringVar(&zone, "z", ctx.ZkDefaultZone(), "") cmdFlags.StringVar(&cluster, "c", "", "") cmdFlags.BoolVar(&this.onlineOnly, "l", false, "") cmdFlags.BoolVar(&this.problematicMode, "p", false, "") cmdFlags.StringVar(&this.groupPattern, "g", "", "") cmdFlags.StringVar(&this.topicPattern, "t", "", "") cmdFlags.BoolVar(&this.tableFmt, "table", false, "") cmdFlags.BoolVar(&this.watchMode, "w", false, "") cmdFlags.IntVar(&this.lagThreshold, "lag", 5000, "") if err := cmdFlags.Parse(args); err != nil { return 1 } if this.watchMode { refreshScreen() } if this.problematicMode { this.onlineOnly = true } zkzone := zk.NewZkZone(zk.DefaultConfig(zone, ctx.ZoneZkAddrs(zone))) bar := progress.New(secondsInMinute) if cluster == "" { for { zkzone.ForSortedClusters(func(zkcluster *zk.ZkCluster) { if this.tableFmt { this.printConsumersLagTable(zkcluster) } else { this.printConsumersLag(zkcluster) } }) if this.watchMode { for i := 1; i <= secondsInMinute; i++ { bar.ShowProgress(i) time.Sleep(time.Second) } } else { break } printSwallowedErrors(this.Ui, zkzone) } return } // display a single cluster for { zkcluster := zkzone.NewCluster(cluster) // panic if invalid cluster if this.tableFmt { this.printConsumersLagTable(zkcluster) } else { this.printConsumersLag(zkcluster) } if this.watchMode { for i := 1; i <= secondsInMinute; i++ { bar.ShowProgress(i) time.Sleep(time.Second) } //refreshScreen() } else { break } printSwallowedErrors(this.Ui, zkzone) } return }