Import path:
gitlab.soludian.com/soludian/ftkit/pkg/progress_bar
progress_bar
import "gitlab.soludian.com/soludian/ftkit/pkg/progress_bar"Example (X Out Of Y)
bar := NewOptions(100, OptionSetPredictTime(true))
for i := 0; i < 100; i++ {
bar.Add(1)
time.Sleep(1 * time.Millisecond)
}Index
- type Option
- func OptionClearOnFinish() Option
- func OptionEnableColorCodes(colorCodes bool) Option
- func OptionFullWidth() Option
- func OptionOnCompletion(cmpl func()) Option
- func OptionSetDescription(description string) Option
- func OptionSetElapsedTime(elapsedTime bool) Option
- func OptionSetItsString(iterationString string) Option
- func OptionSetPredictTime(predictTime bool) Option
- func OptionSetRenderBlankState(r bool) Option
- func OptionSetTheme(t Theme) Option
- func OptionSetVisibility(visibility bool) Option
- func OptionSetWidth(s int) Option
- func OptionSetWriter(w io.Writer) Option
- func OptionShowBytes(val bool) Option
- func OptionShowCount() Option
- func OptionShowDescriptionAtLineEnd() Option
- func OptionShowElapsedTimeOnFinish() Option
- func OptionShowIts() Option
- func OptionSpinnerCustom(spinner []string) Option
- func OptionSpinnerType(spinnerType int) Option
- func OptionThrottle(duration time.Duration) Option
- func OptionUseANSICodes(val bool) Option
- type ProgressBar
- func Default(max int64, description ...string) *ProgressBar
- func DefaultBytes(maxBytes int64, description ...string) *ProgressBar
- func DefaultBytesSilent(maxBytes int64, description ...string) *ProgressBar
- func DefaultSilent(max int64, description ...string) *ProgressBar
- func New(max int) *ProgressBar
- func New64(max int64) *ProgressBar
- func NewOptions(max int, options ...Option) *ProgressBar
- func NewOptions64(max int64, options ...Option) *ProgressBar
- func (p *ProgressBar) Add(num int) error
- func (p *ProgressBar) Add64(num int64) error
- func (p *ProgressBar) ChangeMax(newMax int)
- func (p *ProgressBar) ChangeMax64(newMax int64)
- func (p *ProgressBar) Clear() error
- func (p *ProgressBar) Close() (err error)
- func (p *ProgressBar) Describe(description string)
- func (p *ProgressBar) Exit() error
- func (p *ProgressBar) Finish() error
- func (p *ProgressBar) GetMax() int
- func (p *ProgressBar) GetMax64() int64
- func (p *ProgressBar) IsFinished() bool
- func (p *ProgressBar) Read(b []byte) (n int, err error)
- func (p *ProgressBar) RenderBlank() error
- func (p *ProgressBar) Reset()
- func (p *ProgressBar) Set(num int) error
- func (p *ProgressBar) Set64(num int64) error
- func (p *ProgressBar) State() State
- func (p *ProgressBar) String() string
- func (p *ProgressBar) Write(b []byte) (n int, err error)
- type Reader
- type State
- type Theme
type Option
Option is the type all options need to adhere to
type Option func(p *ProgressBar)func OptionClearOnFinish
func OptionClearOnFinish() OptionOptionClearOnFinish will clear the bar once its finished
Example
bar := NewOptions(100, OptionSetWidth(10), OptionClearOnFinish())
bar.Reset()
bar.Finish()
fmt.Println("Finished")
// Output:
// FinishedOutput
Finishedfunc OptionEnableColorCodes
func OptionEnableColorCodes(colorCodes bool) OptionOptionEnableColorCodes enables or disables support for color codes using mitchellh/colorstring
func OptionFullWidth
func OptionFullWidth() OptionOptionFullWidth sets the bar to be full width
func OptionOnCompletion
func OptionOnCompletion(cmpl func()) OptionOptionOnCompletion will invoke cmpl function once its finished
func OptionSetDescription
func OptionSetDescription(description string) OptionOptionSetDescription sets the description of the bar to render in front of it
func OptionSetElapsedTime
func OptionSetElapsedTime(elapsedTime bool) OptionOptionSetElapsedTime will enable elapsed time. Always enabled if OptionSetPredictTime is true.
func OptionSetItsString
func OptionSetItsString(iterationString string) OptionOptionSetItsString sets what's displayed for iterations a second. The default is "it" which would display: "it/s"
func OptionSetPredictTime
func OptionSetPredictTime(predictTime bool) OptionOptionSetPredictTime will also attempt to predict the time remaining.
Example
bar := NewOptions(100, OptionSetWidth(10), OptionSetPredictTime(false))
_ = bar.Add(10)
// Output:
// 10% |█ |Output
10% |█ |func OptionSetRenderBlankState
func OptionSetRenderBlankState(r bool) OptionOptionSetRenderBlankState sets whether or not to render a 0% bar on construction
Example
NewOptions(10, OptionSetWidth(10), OptionSetRenderBlankState(true))
// Output:
// 0% | | [0s:0s]Output
0% | | [0s:0s]func OptionSetTheme
func OptionSetTheme(t Theme) OptionOptionSetTheme sets the elements the bar is constructed of
func OptionSetVisibility
func OptionSetVisibility(visibility bool) OptionOptionSetVisibility sets the visibility
func OptionSetWidth
func OptionSetWidth(s int) OptionOptionSetWidth sets the width of the bar
func OptionSetWriter
func OptionSetWriter(w io.Writer) OptionOptionSetWriter sets the output writer (defaults to os.StdOut)
func OptionShowBytes
func OptionShowBytes(val bool) OptionOptionShowBytes will update the progress bar configuration settings to display/hide kBytes/Sec
Example (Spinner)
/*
Spinner test with iterations and count
*/
bar := NewOptions(-1,
OptionSetWidth(10),
OptionShowBytes(true),
)
bar.Reset()
time.Sleep(1 * time.Second)
// since 10 is the width and we don't know the max bytes
// it will do a infinite scrolling.
bar.Add(11)
// Output:
// - (11 B/s) [1s]Output
- (11 B/s) [1s]func OptionShowCount
func OptionShowCount() OptionOptionShowCount will also print current count out of total
Example (Minuscule)
bar := NewOptions(10000, OptionSetWidth(10), OptionShowCount(), OptionSetPredictTime(false))
bar.Add(1)
// Output:
// 0% | | (1/10000)Output
0% | | (1/10000)func OptionShowDescriptionAtLineEnd
func OptionShowDescriptionAtLineEnd() OptionOptionShowDescriptionAtLineEnd defines whether description should be written at line end instead of line start
Example
bar := NewOptions(100, OptionSetWidth(10), OptionShowDescriptionAtLineEnd(), OptionSetDescription("hello"))
_ = bar.Add(10)
// Output:
// 10% |█ | [0s:0s] helloOutput
10% |█ | [0s:0s] helloExample (Spinner)
bar := NewOptions(-1, OptionSetWidth(10), OptionShowDescriptionAtLineEnd(), OptionSetDescription("hello"))
_ = bar.Add(1)
// Output:
// | [0s] helloOutput
| [0s] hellofunc OptionShowElapsedTimeOnFinish
func OptionShowElapsedTimeOnFinish() OptionOptionShowElapsedOnFinish will keep the display of elapsed time on finish
func OptionShowIts
func OptionShowIts() OptionOptionShowIts will also print the iterations/second
Example
bar := NewOptions(100, OptionSetWidth(10), OptionShowIts(), OptionSetPredictTime(false))
bar.Reset()
time.Sleep(1 * time.Second)
bar.Add(10)
// Output:
// 10% |█ | (10 it/s)Output
10% |█ | (10 it/s)Example (Count)
bar := NewOptions(100, OptionSetWidth(10), OptionShowIts(), OptionShowCount())
bar.Reset()
time.Sleep(1 * time.Second)
bar.Add(10)
// Output:
// 10% |█ | (10/100, 10 it/s) [1s:9s]Output
10% |█ | (10/100, 10 it/s) [1s:9s]Example (Spinner)
/*
Spinner test with iteration count and iteration rate
*/
bar := NewOptions(-1,
OptionSetWidth(10),
OptionShowIts(),
OptionShowCount(),
)
bar.Reset()
time.Sleep(1 * time.Second)
bar.Add(5)
// Output:
// - (5/-, 5 it/s) [1s]Output
- (5/-, 5 it/s) [1s]func OptionSpinnerCustom
func OptionSpinnerCustom(spinner []string) OptionOptionSpinnerCustom sets the spinner used for indeterminate bars to the passed slice of string
func OptionSpinnerType
func OptionSpinnerType(spinnerType int) OptionOptionSpinnerType sets the type of spinner used for indeterminate bars
func OptionThrottle
func OptionThrottle(duration time.Duration) OptionOptionThrottle will wait the specified duration before updating again. The default duration is 0 seconds.
Example
bar := NewOptions(100, OptionSetWidth(10), OptionThrottle(100*time.Millisecond))
bar.Reset()
bar.Add(5)
time.Sleep(150 * time.Millisecond)
bar.Add(5)
bar.Add(10)
// Output:
// 10% |█ | [0s:1s]Output
10% |█ | [0s:1s]func OptionUseANSICodes
func OptionUseANSICodes(val bool) OptionOptionUseANSICodes will use more optimized terminal i/o.
Only useful in environments with support for ANSI escape sequences.
type ProgressBar
ProgressBar is a thread-safe, simple progress bar
type ProgressBar struct {
// contains filtered or unexported fields
}Example (Basic)
bar := NewOptions(100, OptionSetWidth(10))
bar.Reset()
time.Sleep(1 * time.Second)
bar.Add(10)
// Output:
// 10% |█ | [1s:9s]Output
10% |█ | [1s:9s]Example (Invisible)
bar := NewOptions(100, OptionSetWidth(10), OptionSetRenderBlankState(true), OptionSetVisibility(false))
bar.Reset()
fmt.Println("hello, world")
time.Sleep(1 * time.Second)
bar.Add(10)
// Output:
// hello, worldOutput
hello, worldfunc Default
func Default(max int64, description ...string) *ProgressBarDefault provides a progressbar with recommended defaults. Set max to -1 to use as a spinner.
Example
bar := Default(100)
for i := 0; i < 50; i++ {
bar.Add(1)
time.Sleep(10 * time.Millisecond)
}
// Output:
//Output
func DefaultBytes
func DefaultBytes(maxBytes int64, description ...string) *ProgressBarDefaultBytes provides a progressbar to measure byte throughput with recommended defaults. Set maxBytes to -1 to use as a spinner.
func DefaultBytesSilent
func DefaultBytesSilent(maxBytes int64, description ...string) *ProgressBarDefaultBytesSilent is the same as DefaultBytes, but does not output anywhere. String() can be used to get the output instead.
func DefaultSilent
func DefaultSilent(max int64, description ...string) *ProgressBarDefaultSilent is the same as Default, but does not output anywhere. String() can be used to get the output instead.
func New
func New(max int) *ProgressBarNew returns a new ProgressBar with the specified maximum
func New64
func New64(max int64) *ProgressBarNew64 returns a new ProgressBar with the specified maximum
func NewOptions
func NewOptions(max int, options ...Option) *ProgressBarNewOptions constructs a new instance of ProgressBar, with any options you specify
func NewOptions64
func NewOptions64(max int64, options ...Option) *ProgressBarNewOptions64 constructs a new instance of ProgressBar, with any options you specify
func (*ProgressBar) Add
func (p *ProgressBar) Add(num int) errorAdd will add the specified amount to the progressbar
func (*ProgressBar) Add64
func (p *ProgressBar) Add64(num int64) errorAdd64 will add the specified amount to the progressbar
func (*ProgressBar) ChangeMax
func (p *ProgressBar) ChangeMax(newMax int)ChangeMax takes in a int and changes the max value of the progress bar
Example
bar := NewOptions(100, OptionSetWidth(10), OptionSetPredictTime(false))
bar.ChangeMax(50)
bar.Add(50)
// Output:
// 100% |██████████|Output
100% |██████████|func (*ProgressBar) ChangeMax64
func (p *ProgressBar) ChangeMax64(newMax int64)ChangeMax64 is basically the same as ChangeMax, but takes in a int64 to avoid casting
func (*ProgressBar) Clear
func (p *ProgressBar) Clear() errorClear erases the progress bar from the current line
func (*ProgressBar) Close
func (p *ProgressBar) Close() (err error)func (*ProgressBar) Describe
func (p *ProgressBar) Describe(description string)Describe will change the description shown before the progress, which can be changed on the fly (as for a slow running process).
func (*ProgressBar) Exit
func (p *ProgressBar) Exit() errorExit will exit the bar to keep current state
func (*ProgressBar) Finish
func (p *ProgressBar) Finish() errorFinish will fill the bar to full
Example
bar := NewOptions(100, OptionSetWidth(10))
bar.Finish()
// Output:
// 100% |██████████|Output
100% |██████████|func (*ProgressBar) GetMax
func (p *ProgressBar) GetMax() intGetMax returns the max of a bar
func (*ProgressBar) GetMax64
func (p *ProgressBar) GetMax64() int64GetMax64 returns the current max
func (*ProgressBar) IsFinished
func (p *ProgressBar) IsFinished() boolIsFinished returns true if progress bar is completed
func (*ProgressBar) Read
func (p *ProgressBar) Read(b []byte) (n int, err error)Read implement io.Reader
func (*ProgressBar) RenderBlank
func (p *ProgressBar) RenderBlank() errorRenderBlank renders the current bar state, you can use this to render a 0% state
func (*ProgressBar) Reset
func (p *ProgressBar) Reset()Reset will reset the clock that is used to calculate current time and the time left.
func (*ProgressBar) Set
func (p *ProgressBar) Set(num int) errorSet will set the bar to a current number
func (*ProgressBar) Set64
func (p *ProgressBar) Set64(num int64) errorSet64 will set the bar to a current number
func (*ProgressBar) State
func (p *ProgressBar) State() StateState returns the current state
func (*ProgressBar) String
func (p *ProgressBar) String() stringString returns the current rendered version of the progress bar. It will never return an empty string while the progress bar is running.
func (*ProgressBar) Write
func (p *ProgressBar) Write(b []byte) (n int, err error)Write implement io.Writer
type Reader
Reader is the progressbar io.Reader struct
type Reader struct {
io.Reader
// contains filtered or unexported fields
}func NewReader
func NewReader(r io.Reader, bar *ProgressBar) ReaderNewReader return a new Reader with a given progress bar.
func (*Reader) Close
func (r *Reader) Close() (err error)Close the reader when it implements io.Closer
func (*Reader) Read
func (r *Reader) Read(p []byte) (n int, err error)Read will read the data and add the number of bytes to the progressbar
type State
State is the basic properties of the bar
type State struct {
CurrentPercent float64
CurrentBytes float64
SecondsSince float64
SecondsLeft float64
KBsPerSecond float64
}type Theme
Theme defines the elements of the bar
type Theme struct {
Saucer string
AltSaucerHead string
SaucerHead string
SaucerPadding string
BarStart string
BarEnd string
}Generated by gomarkdoc