Documentation
¶
Overview ¶
Package decor provides common decorators for "github.com/vbauerster/mpb/v8" module.
Some decorators returned by this package might have a closure state. It is ok to use decorators concurrently, unless you share the same decorator among multiple *mpb.Bar instances. To avoid data races, create new decorator per *mpb.Bar instance.
Don't:
p := mpb.New() name := decor.Name("bar") p.AddBar(100, mpb.AppendDecorators(name)) p.AddBar(100, mpb.AppendDecorators(name))
Do:
p := mpb.New() p.AddBar(100, mpb.AppendDecorators(decor.Name("bar1"))) p.AddBar(100, mpb.AppendDecorators(decor.Name("bar2")))
Index ¶
- Constants
- Variables
- func FmtAsSpeed(input fmt.Formatter) fmt.Formatter
- func NewMedian() ewma.MovingAverage
- func NewThreadSafeMovingAverage(average ewma.MovingAverage) ewma.MovingAverage
- type AverageDecorator
- type DecorFunc
- type Decorator
- func Any(fn DecorFunc, wcc ...WC) Decorator
- func AverageETA(style TimeStyle, wcc ...WC) Decorator
- func AverageSpeed(unit interface{}, format string, wcc ...WC) Decorator
- func Conditional(cond bool, a, b Decorator) Decorator
- func Counters(unit interface{}, pairFmt string, wcc ...WC) Decorator
- func CountersKibiByte(pairFmt string, wcc ...WC) Decorator
- func CountersKiloByte(pairFmt string, wcc ...WC) Decorator
- func CountersNoUnit(pairFmt string, wcc ...WC) Decorator
- func Current(unit interface{}, format string, wcc ...WC) Decorator
- func CurrentKibiByte(format string, wcc ...WC) Decorator
- func CurrentKiloByte(format string, wcc ...WC) Decorator
- func CurrentNoUnit(format string, wcc ...WC) Decorator
- func Elapsed(style TimeStyle, wcc ...WC) Decorator
- func EwmaETA(style TimeStyle, age float64, wcc ...WC) Decorator
- func EwmaNormalizedETA(style TimeStyle, age float64, normalizer TimeNormalizer, wcc ...WC) Decorator
- func EwmaSpeed(unit interface{}, format string, age float64, wcc ...WC) Decorator
- func InvertedCurrent(unit interface{}, format string, wcc ...WC) Decorator
- func InvertedCurrentKibiByte(format string, wcc ...WC) Decorator
- func InvertedCurrentKiloByte(format string, wcc ...WC) Decorator
- func InvertedCurrentNoUnit(format string, wcc ...WC) Decorator
- func Meta(decorator Decorator, fn func(string) string) Decorator
- func MovingAverageETA(style TimeStyle, average ewma.MovingAverage, normalizer TimeNormalizer, ...) Decorator
- func MovingAverageSpeed(unit interface{}, format string, average ewma.MovingAverage, wcc ...WC) Decorator
- func Name(str string, wcc ...WC) Decorator
- func NewAverageETA(style TimeStyle, start time.Time, normalizer TimeNormalizer, wcc ...WC) Decorator
- func NewAverageSpeed(unit interface{}, format string, start time.Time, wcc ...WC) Decorator
- func NewElapsed(style TimeStyle, start time.Time, wcc ...WC) Decorator
- func NewPercentage(format string, wcc ...WC) Decorator
- func OnAbort(decorator Decorator, message string) Decorator
- func OnAbortMeta(decorator Decorator, fn func(string) string) Decorator
- func OnComplete(decorator Decorator, message string) Decorator
- func OnCompleteMeta(decorator Decorator, fn func(string) string) Decorator
- func OnCompleteMetaOrOnAbortMeta(decorator Decorator, fn func(string) string) Decorator
- func OnCompleteOrOnAbort(decorator Decorator, message string) Decorator
- func OnCondition(decorator Decorator, cond bool) Decorator
- func OnPredicate(decorator Decorator, predicate func() bool) Decorator
- func Percentage(wcc ...WC) Decorator
- func Predicative(predicate func() bool, a, b Decorator) Decorator
- func Spinner(frames []string, wcc ...WC) Decorator
- func Total(unit interface{}, format string, wcc ...WC) Decorator
- func TotalKibiByte(format string, wcc ...WC) Decorator
- func TotalKiloByte(format string, wcc ...WC) Decorator
- func TotalNoUnit(format string, wcc ...WC) Decorator
- type EwmaDecorator
- type Formatter
- type ShutdownListener
- type SizeB1000
- type SizeB1024
- type Statistics
- type Synchronizer
- type TimeNormalizer
- type TimeNormalizerFunc
- type TimeStyle
- type WC
- type Wrapper
Constants ¶
const ( // DindentRight sets indentation from right to left. // // |foo |b | DindentRight is set // | foo| b| DindentRight is not set DindentRight = 1 << iota // DextraSpace bit adds extra indentation space. DextraSpace // DSyncWidth bit enables same column width synchronization. // Effective with multiple bars only. DSyncWidth // DSyncWidthR is shortcut for DSyncWidth|DindentRight DSyncWidthR = DSyncWidth | DindentRight // DSyncSpace is shortcut for DSyncWidth|DextraSpace DSyncSpace = DSyncWidth | DextraSpace // DSyncSpaceR is shortcut for DSyncWidth|DextraSpace|DindentRight DSyncSpaceR = DSyncWidth | DextraSpace | DindentRight )
Variables ¶
var ( WCSyncWidth = WC{C: DSyncWidth} WCSyncWidthR = WC{C: DSyncWidthR} WCSyncSpace = WC{C: DSyncSpace} WCSyncSpaceR = WC{C: DSyncSpaceR} )
Global convenience instances of WC with sync width bit set. To be used with multiple bars only, i.e. not effective for single bar usage.
Functions ¶
func FmtAsSpeed ¶
FmtAsSpeed adds "/s" to the end of the input formatter. To be used with SizeB1000 or SizeB1024 types, for example:
fmt.Printf("%.1f", FmtAsSpeed(SizeB1024(2048)))
func NewMedian ¶
func NewMedian() ewma.MovingAverage
NewMedian is fixed last 3 samples median MovingAverage.
func NewThreadSafeMovingAverage ¶
func NewThreadSafeMovingAverage(average ewma.MovingAverage) ewma.MovingAverage
NewThreadSafeMovingAverage converts provided ewma.MovingAverage into thread safe ewma.MovingAverage.
Types ¶
type AverageDecorator ¶
AverageDecorator interface. Average decorators should implement this interface to provide start time adjustment facility, for resume-able tasks.
type DecorFunc ¶
type DecorFunc func(Statistics) string
DecorFunc func type. To be used with `func Any(DecorFunc, ...WC) Decorator`.
type Decorator ¶
type Decorator interface { Synchronizer Formatter Decor(Statistics) (str string, viewWidth int) }
Decorator interface. Most of the time there is no need to implement this interface manually, as decor package already provides a wide range of decorators which implement this interface. If however built-in decorators don't meet your needs, you're free to implement your own one by implementing this particular interface. The easy way to go is to convert a `DecorFunc` into a `Decorator` interface by using provided `func Any(DecorFunc, ...WC) Decorator`.
func Any ¶
Any decorator. Converts DecorFunc into Decorator.
`fn` DecorFunc callback `wcc` optional WC config
func AverageETA ¶
AverageETA decorator. It's wrapper of NewAverageETA.
`style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] `wcc` optional WC config
func AverageSpeed ¶
AverageSpeed decorator with dynamic unit measure adjustment. It's a wrapper of NewAverageSpeed.
func Conditional ¶
Conditional returns decorator `a` if condition is true, otherwise decorator `b`.
`cond` bool `a` Decorator `b` Decorator
func Counters ¶
Counters decorator with dynamic unit measure adjustment.
`unit` one of [0|SizeB1024(0)|SizeB1000(0)] `pairFmt` printf compatible verbs for current and total `wcc` optional WC config
pairFmt example if unit=SizeB1000(0):
pairFmt="%d / %d" output: "1MB / 12MB" pairFmt="% d / % d" output: "1 MB / 12 MB" pairFmt="%.1f / %.1f" output: "1.0MB / 12.0MB" pairFmt="% .1f / % .1f" output: "1.0 MB / 12.0 MB" pairFmt="%f / %f" output: "1.000000MB / 12.000000MB" pairFmt="% f / % f" output: "1.000000 MB / 12.000000 MB"
func CountersKibiByte ¶
CountersKibiByte is a wrapper around Counters with predefined unit as SizeB1024(0).
func CountersKiloByte ¶
CountersKiloByte is a wrapper around Counters with predefined unit as SizeB1000(0).
func CountersNoUnit ¶
CountersNoUnit is a wrapper around Counters with no unit param.
func Current ¶
Current decorator with dynamic unit measure adjustment.
`unit` one of [0|SizeB1024(0)|SizeB1000(0)] `format` printf compatible verb for Current `wcc` optional WC config
format example if unit=SizeB1024(0):
format="%d" output: "12MiB" format="% d" output: "12 MiB" format="%.1f" output: "12.0MiB" format="% .1f" output: "12.0 MiB" format="%f" output: "12.000000MiB" format="% f" output: "12.000000 MiB"
func CurrentKibiByte ¶
CurrentKibiByte is a wrapper around Current with predefined unit as SizeB1024(0).
func CurrentKiloByte ¶
CurrentKiloByte is a wrapper around Current with predefined unit as SizeB1000(0).
func CurrentNoUnit ¶
CurrentNoUnit is a wrapper around Current with no unit param.
func Elapsed ¶
Elapsed decorator. It's wrapper of NewElapsed.
`style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] `wcc` optional WC config
func EwmaETA ¶
EwmaETA exponential-weighted-moving-average based ETA decorator. For this decorator to work correctly you have to measure each iteration's duration and pass it to one of the (*Bar).EwmaIncr... family methods.
func EwmaNormalizedETA ¶ added in v8.8.0
func EwmaNormalizedETA(style TimeStyle, age float64, normalizer TimeNormalizer, wcc ...WC) Decorator
EwmaNormalizedETA same as EwmaETA but with TimeNormalizer option.
func EwmaSpeed ¶
EwmaSpeed exponential-weighted-moving-average based speed decorator. For this decorator to work correctly you have to measure each iteration's duration and pass it to one of the (*Bar).EwmaIncr... family methods.
func InvertedCurrent ¶
InvertedCurrent decorator with dynamic unit measure adjustment.
`unit` one of [0|SizeB1024(0)|SizeB1000(0)] `format` printf compatible verb for InvertedCurrent `wcc` optional WC config
format example if unit=SizeB1024(0):
format="%d" output: "12MiB" format="% d" output: "12 MiB" format="%.1f" output: "12.0MiB" format="% .1f" output: "12.0 MiB" format="%f" output: "12.000000MiB" format="% f" output: "12.000000 MiB"
func InvertedCurrentKibiByte ¶
InvertedCurrentKibiByte is a wrapper around InvertedCurrent with predefined unit as SizeB1024(0).
func InvertedCurrentKiloByte ¶
InvertedCurrentKiloByte is a wrapper around InvertedCurrent with predefined unit as SizeB1000(0).
func InvertedCurrentNoUnit ¶
InvertedCurrentNoUnit is a wrapper around InvertedCurrent with no unit param.
func Meta ¶ added in v8.5.0
Meta wrap decorator. Provided fn is supposed to wrap output of given decorator with meta information like ANSI escape codes for example. Primary usage intention is to set SGR display attributes.
`decorator` Decorator to wrap `fn` func to apply meta information
func MovingAverageETA ¶
func MovingAverageETA(style TimeStyle, average ewma.MovingAverage, normalizer TimeNormalizer, wcc ...WC) Decorator
MovingAverageETA decorator relies on MovingAverage implementation to calculate its average.
`style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] `average` implementation of MovingAverage interface `normalizer` available implementations are [FixedIntervalTimeNormalizer|MaxTolerateTimeNormalizer] `wcc` optional WC config
func MovingAverageSpeed ¶
func MovingAverageSpeed(unit interface{}, format string, average ewma.MovingAverage, wcc ...WC) Decorator
MovingAverageSpeed decorator relies on MovingAverage implementation to calculate its average.
`unit` one of [0|SizeB1024(0)|SizeB1000(0)] `format` printf compatible verb for value, like "%f" or "%d" `average` MovingAverage implementation `wcc` optional WC config
format examples:
unit=SizeB1024(0), format="%.1f" output: "1.0MiB/s" unit=SizeB1024(0), format="% .1f" output: "1.0 MiB/s" unit=SizeB1000(0), format="%.1f" output: "1.0MB/s" unit=SizeB1000(0), format="% .1f" output: "1.0 MB/s"
func Name ¶
Name decorator displays text that is set once and can't be changed during decorator's lifetime.
`str` string to display `wcc` optional WC config
func NewAverageETA ¶
func NewAverageETA(style TimeStyle, start time.Time, normalizer TimeNormalizer, wcc ...WC) Decorator
NewAverageETA decorator with user provided start time.
`style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] `start` start time `normalizer` available implementations are [FixedIntervalTimeNormalizer|MaxTolerateTimeNormalizer] `wcc` optional WC config
func NewAverageSpeed ¶
NewAverageSpeed decorator with dynamic unit measure adjustment and user provided start time.
`unit` one of [0|SizeB1024(0)|SizeB1000(0)] `format` printf compatible verb for value, like "%f" or "%d" `start` start time `wcc` optional WC config
format examples:
unit=SizeB1024(0), format="%.1f" output: "1.0MiB/s" unit=SizeB1024(0), format="% .1f" output: "1.0 MiB/s" unit=SizeB1000(0), format="%.1f" output: "1.0MB/s" unit=SizeB1000(0), format="% .1f" output: "1.0 MB/s"
func NewElapsed ¶
NewElapsed returns elapsed time decorator.
`style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] `start` start time `wcc` optional WC config
func NewPercentage ¶
NewPercentage percentage decorator with custom format string.
`format` printf compatible verb `wcc` optional WC config
format examples:
format="%d" output: "1%" format="% d" output: "1 %" format="%.1f" output: "1.0%" format="% .1f" output: "1.0 %" format="%f" output: "1.000000%" format="% f" output: "1.000000 %"
func OnAbort ¶
OnAbort wrap decorator. Displays provided message on abort event. Has no effect if bar.Abort(true) is called.
`decorator` Decorator to wrap `message` message to display
func OnAbortMeta ¶ added in v8.5.0
OnAbortMeta wrap decorator. Provided fn is supposed to wrap output of given decorator with meta information like ANSI escape codes for example. Primary usage intention is to set SGR display attributes.
`decorator` Decorator to wrap `fn` func to apply meta information
func OnComplete ¶
OnComplete wrap decorator. Displays provided message on complete event.
`decorator` Decorator to wrap `message` message to display
func OnCompleteMeta ¶ added in v8.5.0
OnCompleteMeta wrap decorator. Provided fn is supposed to wrap output of given decorator with meta information like ANSI escape codes for example. Primary usage intention is to set SGR display attributes.
`decorator` Decorator to wrap `fn` func to apply meta information
func OnCompleteMetaOrOnAbortMeta ¶ added in v8.6.1
OnCompleteMetaOrOnAbortMeta wrap decorator. Provided fn is supposed to wrap output of given decorator with meta information like ANSI escape codes for example. Primary usage intention is to set SGR display attributes.
`decorator` Decorator to wrap `fn` func to apply meta information
func OnCompleteOrOnAbort ¶ added in v8.6.0
OnCompleteOrOnAbort wrap decorator. Displays provided message on complete or on abort event.
`decorator` Decorator to wrap `message` message to display
func OnCondition ¶
OnCondition applies decorator only if a condition is true.
`decorator` Decorator `cond` bool
func OnPredicate ¶
OnPredicate applies decorator only if a predicate evaluates to true.
`decorator` Decorator `predicate` func() bool
func Percentage ¶
Percentage returns percentage decorator. It's a wrapper of NewPercentage.
func Predicative ¶
Predicative returns decorator `a` if predicate evaluates to true, otherwise decorator `b`.
`predicate` func() bool `a` Decorator `b` Decorator
func Spinner ¶
Spinner returns spinner decorator.
`frames` spinner frames, if nil or len==0, default is used `wcc` optional WC config
func Total ¶
Total decorator with dynamic unit measure adjustment.
`unit` one of [0|SizeB1024(0)|SizeB1000(0)] `format` printf compatible verb for Total `wcc` optional WC config
format example if unit=SizeB1024(0):
format="%d" output: "12MiB" format="% d" output: "12 MiB" format="%.1f" output: "12.0MiB" format="% .1f" output: "12.0 MiB" format="%f" output: "12.000000MiB" format="% f" output: "12.000000 MiB"
func TotalKibiByte ¶
TotalKibiByte is a wrapper around Total with predefined unit as SizeB1024(0).
func TotalKiloByte ¶
TotalKiloByte is a wrapper around Total with predefined unit as SizeB1000(0).
func TotalNoUnit ¶
TotalNoUnit is a wrapper around Total with no unit param.
type EwmaDecorator ¶
EwmaDecorator interface. EWMA based decorators should implement this one.
type Formatter ¶ added in v8.5.0
Formatter interface. Format method needs to be called from within Decorator.Decor method in order to format string according to decor.WC settings. No need to implement manually as long as decor.WC is embedded.
type ShutdownListener ¶
type ShutdownListener interface {
OnShutdown()
}
ShutdownListener interface. If decorator needs to be notified once upon bar shutdown event, so this is the right interface to implement.
type SizeB1000 ¶
type SizeB1000 int64
SizeB1000 named type, which implements fmt.Formatter interface. It adjusts its value according to byte size multiple by 1000 and appends appropriate size marker (KB, MB, GB, TB).
type SizeB1024 ¶
type SizeB1024 int64
SizeB1024 named type, which implements fmt.Formatter interface. It adjusts its value according to byte size multiple by 1024 and appends appropriate size marker (KiB, MiB, GiB, TiB).
type Statistics ¶
type Statistics struct { AvailableWidth int // calculated width initially equal to terminal width RequestedWidth int // width set by `mpb.WithWidth` ID int Total int64 Current int64 Refill int64 Completed bool Aborted bool }
Statistics contains fields which are necessary for implementing `decor.Decorator` and `mpb.BarFiller` interfaces.
type Synchronizer ¶
Synchronizer interface. All decorators implement this interface implicitly. Its Sync method exposes width sync channel, if DSyncWidth bit is set.
type TimeNormalizer ¶
TimeNormalizer interface. Implementers could be passed into MovingAverageETA, in order to affect i.e. normalize its output.
func FixedIntervalTimeNormalizer ¶
func FixedIntervalTimeNormalizer(updInterval int) TimeNormalizer
FixedIntervalTimeNormalizer returns implementation of TimeNormalizer.
func MaxTolerateTimeNormalizer ¶
func MaxTolerateTimeNormalizer(maxTolerate time.Duration) TimeNormalizer
MaxTolerateTimeNormalizer returns implementation of TimeNormalizer.
type TimeNormalizerFunc ¶
TimeNormalizerFunc is function type adapter to convert function into TimeNormalizer.
type WC ¶
WC is a struct with two public fields W and C, both of int type. W represents width and C represents bit set of width related config. A decorator should embed WC, to enable width synchronization.