summaryrefslogtreecommitdiff
path: root/vendor/github.com/vbauerster/mpb/v4/decor/elapsed.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/vbauerster/mpb/v4/decor/elapsed.go')
-rw-r--r--vendor/github.com/vbauerster/mpb/v4/decor/elapsed.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/github.com/vbauerster/mpb/v4/decor/elapsed.go b/vendor/github.com/vbauerster/mpb/v4/decor/elapsed.go
new file mode 100644
index 000000000..ac2873143
--- /dev/null
+++ b/vendor/github.com/vbauerster/mpb/v4/decor/elapsed.go
@@ -0,0 +1,48 @@
+package decor
+
+import (
+ "time"
+)
+
+// 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 Elapsed(style TimeStyle, wcc ...WC) Decorator {
+ return NewElapsed(style, time.Now(), wcc...)
+}
+
+// NewElapsed returns elapsed time decorator.
+//
+// `style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS]
+//
+// `startTime` start time
+//
+// `wcc` optional WC config
+func NewElapsed(style TimeStyle, startTime time.Time, wcc ...WC) Decorator {
+ var wc WC
+ for _, widthConf := range wcc {
+ wc = widthConf
+ }
+ d := &elapsedDecorator{
+ WC: wc.Init(),
+ startTime: startTime,
+ producer: chooseTimeProducer(style),
+ }
+ return d
+}
+
+type elapsedDecorator struct {
+ WC
+ startTime time.Time
+ producer func(time.Duration) string
+ msg string
+}
+
+func (d *elapsedDecorator) Decor(st *Statistics) string {
+ if !st.Completed {
+ d.msg = d.producer(time.Since(d.startTime))
+ }
+ return d.FormatMsg(d.msg)
+}