예제 #1
0
파일: progress.go 프로젝트: escribano/clif
func printProgress(c *clif.Command, count int, out clif.Output) {
	out.Printf("<headline>Progressing</headline>\n")
	var wg sync.WaitGroup
	pb := out.ProgressBars()
	if width := c.Option("width").Int(); width > 0 {
		pb.Width(width)
	}
	interval := c.Option("interval").Int()
	style := clif.ProgressBarStyleUtf8
	if c.Option("ascii-style").Bool() {
		style = clif.ProgressBarStyleAscii
	}
	style.Count = clif.PROGRESS_BAR_ADDON_APPEND
	style.Estimate = clif.PROGRESS_BAR_ADDON_PREPEND
	pb.Style(style)
	pb.Start()
	for i := 0; i < count; i++ {
		name := fmt.Sprintf("bar%d", i)
		bar, _ := pb.Init(name, 200)
		wg.Add(1)
		go func(b clif.ProgressBar, t int) {
			defer wg.Done()
			for i := 0; i < 200; i++ {
				b.Increment()
				//<-time.After(time.Millisecond * time.Duration((t+1)*3))
				<-time.After(time.Millisecond * time.Duration(interval*(t+1)))
			}
		}(bar, i)
	}
	wg.Wait()
	pb.Finish()
}
예제 #2
0
파일: table.go 프로젝트: escribano/clif
func printTable1(c *clif.Command, out clif.Output) {
	headers := []string{"H1", "H2", "H3"}
	var table *clif.Table
	if c.Option("open").Bool() {
		table = out.Table(headers, clif.OpenTableStyle)
	} else {
		table = out.Table(headers)
	}
	table.AddRows([][]string{
		[]string{"foo", "bar", "baz"},
		[]string{"yadda", "yadda", "yadda"},
		[]string{"Some crazy multi line content + Some crazy multi line content + Some crazy multi line content", "yadda", "yadda"},
		[]string{"yadda", "Some crazy multi line content + Some crazy multi line content + Some crazy multi line content", "yadda"},
		[]string{"yadda", "yadda", "Some crazy multi line content + Some crazy multi line content + Some crazy multi line content"},
		[]string{"Some <info>crazy multi line content + Some crazy multi line content + Some crazy<reset> multi line content", "yadda", "yadda"},
		[]string{"yadda", "Some <info>crazy multi line content + Some crazy multi line content + Some crazy<reset> multi line content", "yadda"},
		[]string{"yadda", "yadda", "Some <info>crazy multi line content + Some crazy multi line content + Some crazy<reset> multi line content"},
	})
	fmt.Println(table.Render(c.Option("render-width").Int()))
}
예제 #3
0
파일: progress.go 프로젝트: escribano/clif
func cmdProgress3(c *clif.Command, out clif.Output) {
	pbs := out.ProgressBars()
	pbs.Style(clif.ProgressBarStyleAscii)
	if width := c.Option("width").Int(); width > 0 {
		pbs.Width(width)
	}
	pb, _ := pbs.Init("default", 200)
	interval := c.Option("interval").Int()
	pbs.Start()
	var wg sync.WaitGroup
	wg.Add(1)
	go func(b clif.ProgressBar) {
		defer wg.Done()
		for i := 0; i < 200; i++ {
			b.Increment()
			<-time.After(time.Millisecond * time.Duration(interval))
		}
	}(pb)
	wg.Wait()
	<-pbs.Finish()
}
예제 #4
0
파일: table.go 프로젝트: escribano/clif
func printTable2(c *clif.Command, out clif.Output) {
	out.Printf("<headline>Generating table</headline>\n\n")
	headers := []string{"Name", "Age", "Force"}
	var table *clif.Table
	if c.Option("open").Bool() {
		table = out.Table(headers, clif.OpenTableStyleLight)
	} else {
		table = out.Table(headers)
	}
	users := [][]string{
		{
			"<important>Yoda<reset>",
			"Very, very old",
			"Like the uber guy",
		},
		{
			"<important>Luke Skywalker<reset>",
			"Not that old",
			"A bit, but not that much",
		},
		{
			"<important>Anakin Skywalker<reset>",
			"Old dude",
			"He is Lukes father! Was kind of stronger in 1-3, but still failed to" +
				" kill Jar Jar Binks. Not even tried, though. What's with that?",
		},
	}
	for _, user := range users {
		table.AddRow(user)
	}
	fmt.Println(table.Render(c.Option("render-width").Int()))
}
예제 #5
0
파일: progress.go 프로젝트: escribano/clif
func cmdProgress4(c *clif.Command, out clif.Output) {
	pbs := out.ProgressBars()
	if width := c.Option("width").Int(); width > 0 {
		pbs.Width(width)
	}
	interval := c.Option("interval").Int()
	pbs.Start()
	var wg sync.WaitGroup
	amount := c.Option("amount").Int()
	for i := 0; i < amount; i++ {
		wg.Add(1)
		pb, _ := pbs.Init(fmt.Sprintf("bar-%d", i+1), 200)
		go func(b clif.ProgressBar, ii int) {
			defer wg.Done()
			for i := 0; i < 200; i++ {
				b.Increment()
				<-time.After(time.Millisecond * time.Duration(interval*ii))
			}
		}(pb, i)
	}
	wg.Wait()
	<-pbs.Finish()
}