Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pbars |██████████▏ |

GoDoc Build License: MIT

// setup the printer
pp := pbars.NewProgressPrinter("My Title", 50, true)

// go!
for i := 0; i < 400; i++ {
    pp.Update(int64(i+1), 400)
    time.Sleep(16 * time.Millisecond)
}

// new line required afterwards :)
pp.Done()

Example

There's an example in the /example directory which does the following:

progress gif

* cursor flickering is just the high (16ms) update rate and the way the gif was rendered

Features

  • UTF8 blocks vs pure ASCII (sometimes a terminal doesn't support utf8 chars)
pbars.NewProgressPrinter("My Title", 50, true)   // utf8 mode
pbars.NewProgressPrinter("My Title", 50, false)   // ascii mode
  • When writing to Non-TTY output streams like files or those that don't support the \r character, you can set ProgressPrinter{}.NonTTY = true. This will disable the progress bar until the Done function is called upon which it will print the final progress bar, rate, and elapsed time as normal.

  • Uses the overall units per second and elapsed time once you call Done

  • Customisable unit formats

By default the progress bar rate is formatted as 'units' per second. But often you'll want a measure of bytes or bits. The ProgressPrinter struct allows you to set the UnitFunc to be whatever you want as long as it looks like func(v float64) string. An example is the pbars.ByteFormatFunc that will convert to B, KB, MB etc.

  • Interruptf method for printing messages while the progress bar continues (see the example)

  • Clear method for clearing and removing the progress bar once you no longer need it

About

Need a progress bar in your Golang CLI? This might help you

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages