mirror of
https://github.com/containers/podman.git
synced 2025-07-04 10:10:32 +08:00
Bump github.com/vbauerster/mpb/v7 from 7.4.2 to 7.5.2
Bumps [github.com/vbauerster/mpb/v7](https://github.com/vbauerster/mpb) from 7.4.2 to 7.5.2. - [Release notes](https://github.com/vbauerster/mpb/releases) - [Commits](https://github.com/vbauerster/mpb/compare/v7.4.2...v7.5.2) --- updated-dependencies: - dependency-name: github.com/vbauerster/mpb/v7 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
2
go.mod
2
go.mod
@ -58,7 +58,7 @@ require (
|
|||||||
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
|
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
|
||||||
github.com/uber/jaeger-client-go v2.30.0+incompatible
|
github.com/uber/jaeger-client-go v2.30.0+incompatible
|
||||||
github.com/ulikunitz/xz v0.5.10
|
github.com/ulikunitz/xz v0.5.10
|
||||||
github.com/vbauerster/mpb/v7 v7.4.2
|
github.com/vbauerster/mpb/v7 v7.5.2
|
||||||
github.com/vishvananda/netlink v1.1.1-0.20220115184804-dd687eb2f2d4
|
github.com/vishvananda/netlink v1.1.1-0.20220115184804-dd687eb2f2d4
|
||||||
go.etcd.io/bbolt v1.3.6
|
go.etcd.io/bbolt v1.3.6
|
||||||
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f
|
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f
|
||||||
|
3
go.sum
3
go.sum
@ -1593,8 +1593,9 @@ github.com/valyala/quicktemplate v1.7.0/go.mod h1:sqKJnoaOF88V07vkO+9FL8fb9uZg/V
|
|||||||
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
|
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
|
||||||
github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME=
|
github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME=
|
||||||
github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI=
|
github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI=
|
||||||
github.com/vbauerster/mpb/v7 v7.4.2 h1:n917F4d8EWdUKc9c81wFkksyG6P6Mg7IETfKCE1Xqng=
|
|
||||||
github.com/vbauerster/mpb/v7 v7.4.2/go.mod h1:UmOiIUI8aPqWXIps0ciik3RKMdzx7+ooQpq+fBcXwBA=
|
github.com/vbauerster/mpb/v7 v7.4.2/go.mod h1:UmOiIUI8aPqWXIps0ciik3RKMdzx7+ooQpq+fBcXwBA=
|
||||||
|
github.com/vbauerster/mpb/v7 v7.5.2 h1:Ph3JvpBcoIwzIG1QwbUq97KQifrTRbKcMXN9rN5BYAs=
|
||||||
|
github.com/vbauerster/mpb/v7 v7.5.2/go.mod h1:UmOiIUI8aPqWXIps0ciik3RKMdzx7+ooQpq+fBcXwBA=
|
||||||
github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE=
|
github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE=
|
||||||
github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
|
github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
|
||||||
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
|
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
|
||||||
|
79
vendor/github.com/vbauerster/mpb/v7/bar.go
generated
vendored
79
vendor/github.com/vbauerster/mpb/v7/bar.go
generated
vendored
@ -29,7 +29,7 @@ type Bar struct {
|
|||||||
recoveredPanic interface{}
|
recoveredPanic interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type extenderFunc func(in io.Reader, reqWidth int, st decor.Statistics) (out io.Reader, lines int)
|
type extenderFunc func(rows []io.Reader, width int, stat decor.Statistics) []io.Reader
|
||||||
|
|
||||||
// bState is actual bar's state.
|
// bState is actual bar's state.
|
||||||
type bState struct {
|
type bState struct {
|
||||||
@ -57,14 +57,15 @@ type bState struct {
|
|||||||
extender extenderFunc
|
extender extenderFunc
|
||||||
debugOut io.Writer
|
debugOut io.Writer
|
||||||
|
|
||||||
afterBar *Bar // key for (*pState).queueBars
|
wait struct {
|
||||||
|
bar *Bar // key for (*pState).queueBars
|
||||||
sync bool
|
sync bool
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type renderFrame struct {
|
type renderFrame struct {
|
||||||
reader io.Reader
|
rows []io.Reader
|
||||||
lines int
|
shutdown int
|
||||||
shutdown bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newBar(container *Progress, bs *bState) *Bar {
|
func newBar(container *Progress, bs *bState) *Bar {
|
||||||
@ -339,8 +340,8 @@ func (b *Bar) Wait() {
|
|||||||
|
|
||||||
func (b *Bar) serve(ctx context.Context, bs *bState) {
|
func (b *Bar) serve(ctx context.Context, bs *bState) {
|
||||||
defer b.container.bwg.Done()
|
defer b.container.bwg.Done()
|
||||||
if bs.afterBar != nil && bs.sync {
|
if bs.wait.bar != nil && bs.wait.sync {
|
||||||
bs.afterBar.Wait()
|
bs.wait.bar.Wait()
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
@ -359,48 +360,58 @@ func (b *Bar) serve(ctx context.Context, bs *bState) {
|
|||||||
func (b *Bar) render(tw int) {
|
func (b *Bar) render(tw int) {
|
||||||
select {
|
select {
|
||||||
case b.operateState <- func(s *bState) {
|
case b.operateState <- func(s *bState) {
|
||||||
var reader io.Reader
|
var rows []io.Reader
|
||||||
var lines int
|
|
||||||
stat := newStatistics(tw, s)
|
stat := newStatistics(tw, s)
|
||||||
defer func() {
|
defer func() {
|
||||||
// recovering if user defined decorator panics for example
|
// recovering if user defined decorator panics for example
|
||||||
if p := recover(); p != nil {
|
if p := recover(); p != nil {
|
||||||
if s.debugOut != nil {
|
if s.debugOut != nil {
|
||||||
fmt.Fprintln(s.debugOut, p)
|
for _, fn := range []func() (int, error){
|
||||||
_, _ = s.debugOut.Write(debug.Stack())
|
func() (int, error) {
|
||||||
|
return fmt.Fprintln(s.debugOut, p)
|
||||||
|
},
|
||||||
|
func() (int, error) {
|
||||||
|
return s.debugOut.Write(debug.Stack())
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
if _, err := fn(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
s.aborted = !s.completed
|
s.aborted = !s.completed
|
||||||
s.extender = makePanicExtender(p)
|
s.extender = makePanicExtender(p)
|
||||||
reader, lines = s.extender(nil, s.reqWidth, stat)
|
|
||||||
b.recoveredPanic = p
|
b.recoveredPanic = p
|
||||||
}
|
}
|
||||||
frame := renderFrame{
|
if fn := s.extender; fn != nil {
|
||||||
reader: reader,
|
rows = fn(rows, s.reqWidth, stat)
|
||||||
lines: lines + 1,
|
|
||||||
shutdown: s.completed || s.aborted,
|
|
||||||
}
|
}
|
||||||
if frame.shutdown {
|
frame := &renderFrame{
|
||||||
|
rows: rows,
|
||||||
|
}
|
||||||
|
if s.completed || s.aborted {
|
||||||
b.cancel()
|
b.cancel()
|
||||||
|
frame.shutdown++
|
||||||
}
|
}
|
||||||
b.frameCh <- &frame
|
b.frameCh <- frame
|
||||||
}()
|
}()
|
||||||
if b.recoveredPanic == nil {
|
if b.recoveredPanic == nil {
|
||||||
reader = s.draw(stat)
|
rows = append(rows, s.draw(stat))
|
||||||
}
|
}
|
||||||
reader, lines = s.extender(reader, s.reqWidth, stat)
|
|
||||||
}:
|
}:
|
||||||
case <-b.done:
|
case <-b.done:
|
||||||
var reader io.Reader
|
var rows []io.Reader
|
||||||
var lines int
|
s, stat := b.bs, newStatistics(tw, b.bs)
|
||||||
stat, s := newStatistics(tw, b.bs), b.bs
|
|
||||||
if b.recoveredPanic == nil {
|
if b.recoveredPanic == nil {
|
||||||
reader = s.draw(stat)
|
rows = append(rows, s.draw(stat))
|
||||||
}
|
}
|
||||||
reader, lines = s.extender(reader, s.reqWidth, stat)
|
if fn := s.extender; fn != nil {
|
||||||
b.frameCh <- &renderFrame{
|
rows = fn(rows, s.reqWidth, stat)
|
||||||
reader: reader,
|
|
||||||
lines: lines + 1,
|
|
||||||
}
|
}
|
||||||
|
frame := &renderFrame{
|
||||||
|
rows: rows,
|
||||||
|
}
|
||||||
|
b.frameCh <- frame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,7 +457,7 @@ func (b *Bar) wSyncTable() [][]chan int {
|
|||||||
|
|
||||||
func (s *bState) draw(stat decor.Statistics) io.Reader {
|
func (s *bState) draw(stat decor.Statistics) io.Reader {
|
||||||
bufP, bufB, bufA := s.buffers[0], s.buffers[1], s.buffers[2]
|
bufP, bufB, bufA := s.buffers[0], s.buffers[1], s.buffers[2]
|
||||||
nlr := strings.NewReader("\n")
|
nlr := bytes.NewReader([]byte("\n"))
|
||||||
tw := stat.AvailableWidth
|
tw := stat.AvailableWidth
|
||||||
for _, d := range s.pDecorators {
|
for _, d := range s.pDecorators {
|
||||||
str := d.Decor(stat)
|
str := d.Decor(stat)
|
||||||
@ -596,11 +607,11 @@ func extractBaseDecorator(d decor.Decorator) decor.Decorator {
|
|||||||
|
|
||||||
func makePanicExtender(p interface{}) extenderFunc {
|
func makePanicExtender(p interface{}) extenderFunc {
|
||||||
pstr := fmt.Sprint(p)
|
pstr := fmt.Sprint(p)
|
||||||
return func(_ io.Reader, _ int, st decor.Statistics) (io.Reader, int) {
|
return func(rows []io.Reader, _ int, stat decor.Statistics) []io.Reader {
|
||||||
mr := io.MultiReader(
|
r := io.MultiReader(
|
||||||
strings.NewReader(runewidth.Truncate(pstr, st.AvailableWidth, "…")),
|
strings.NewReader(runewidth.Truncate(pstr, stat.AvailableWidth, "…")),
|
||||||
strings.NewReader("\n"),
|
bytes.NewReader([]byte("\n")),
|
||||||
)
|
)
|
||||||
return mr, 0
|
return append(rows, r)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
53
vendor/github.com/vbauerster/mpb/v7/bar_option.go
generated
vendored
53
vendor/github.com/vbauerster/mpb/v7/bar_option.go
generated
vendored
@ -60,6 +60,7 @@ func BarWidth(width int) BarOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BarQueueAfter puts this (being constructed) bar into the queue.
|
// BarQueueAfter puts this (being constructed) bar into the queue.
|
||||||
|
// BarPriority will be inherited from the argument bar.
|
||||||
// When argument bar completes or aborts queued bar replaces its place.
|
// When argument bar completes or aborts queued bar replaces its place.
|
||||||
// If sync is true queued bar is suspended until argument bar completes
|
// If sync is true queued bar is suspended until argument bar completes
|
||||||
// or aborts.
|
// or aborts.
|
||||||
@ -68,8 +69,8 @@ func BarQueueAfter(bar *Bar, sync bool) BarOption {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return func(s *bState) {
|
return func(s *bState) {
|
||||||
s.afterBar = bar
|
s.wait.bar = bar
|
||||||
s.sync = sync
|
s.wait.sync = sync
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,29 +112,61 @@ func BarFillerMiddleware(middle func(BarFiller) BarFiller) BarOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BarPriority sets bar's priority. Zero is highest priority, i.e. bar
|
// BarPriority sets bar's priority. Zero is highest priority, i.e. bar
|
||||||
// will be on top. If `BarReplaceOnComplete` option is supplied, this
|
// will be on top. This option isn't effective with `BarQueueAfter` option.
|
||||||
// option is ignored.
|
|
||||||
func BarPriority(priority int) BarOption {
|
func BarPriority(priority int) BarOption {
|
||||||
return func(s *bState) {
|
return func(s *bState) {
|
||||||
s.priority = priority
|
s.priority = priority
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BarExtender provides a way to extend bar to the next new line.
|
// BarExtender extends bar with arbitrary lines. Provided BarFiller will be
|
||||||
|
// called at each render/flush cycle. Any lines written to the underlying
|
||||||
|
// io.Writer will be printed after the bar itself.
|
||||||
func BarExtender(filler BarFiller) BarOption {
|
func BarExtender(filler BarFiller) BarOption {
|
||||||
|
return barExtender(filler, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BarExtenderRev extends bar with arbitrary lines in reverse order. Provided
|
||||||
|
// BarFiller will be called at each render/flush cycle. Any lines written
|
||||||
|
// to the underlying io.Writer will be printed before the bar itself.
|
||||||
|
func BarExtenderRev(filler BarFiller) BarOption {
|
||||||
|
return barExtender(filler, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func barExtender(filler BarFiller, rev bool) BarOption {
|
||||||
if filler == nil {
|
if filler == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return func(s *bState) {
|
return func(s *bState) {
|
||||||
s.extender = makeExtenderFunc(filler)
|
s.extender = makeExtenderFunc(filler, rev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeExtenderFunc(filler BarFiller) extenderFunc {
|
func makeExtenderFunc(filler BarFiller, rev bool) extenderFunc {
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
return func(r io.Reader, reqWidth int, st decor.Statistics) (io.Reader, int) {
|
base := func(rows []io.Reader, width int, stat decor.Statistics) []io.Reader {
|
||||||
filler.Fill(buf, reqWidth, st)
|
buf.Reset()
|
||||||
return io.MultiReader(r, buf), bytes.Count(buf.Bytes(), []byte("\n"))
|
filler.Fill(buf, width, stat)
|
||||||
|
for {
|
||||||
|
b, err := buf.ReadBytes('\n')
|
||||||
|
if err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
rows = append(rows, bytes.NewReader(b))
|
||||||
|
}
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
|
||||||
|
if !rev {
|
||||||
|
return base
|
||||||
|
} else {
|
||||||
|
return func(rows []io.Reader, width int, stat decor.Statistics) []io.Reader {
|
||||||
|
rows = base(rows, width, stat)
|
||||||
|
for left, right := 0, len(rows)-1; left < right; left, right = left+1, right-1 {
|
||||||
|
rows[left], rows[right] = rows[right], rows[left]
|
||||||
|
}
|
||||||
|
return rows
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
vendor/github.com/vbauerster/mpb/v7/container_option.go
generated
vendored
2
vendor/github.com/vbauerster/mpb/v7/container_option.go
generated
vendored
@ -31,7 +31,7 @@ func WithWidth(width int) ContainerOption {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithRefreshRate overrides default 120ms refresh rate.
|
// WithRefreshRate overrides default 150ms refresh rate.
|
||||||
func WithRefreshRate(d time.Duration) ContainerOption {
|
func WithRefreshRate(d time.Duration) ContainerOption {
|
||||||
return func(s *pState) {
|
return func(s *pState) {
|
||||||
s.rr = d
|
s.rr = d
|
||||||
|
29
vendor/github.com/vbauerster/mpb/v7/cwriter/writer.go
generated
vendored
29
vendor/github.com/vbauerster/mpb/v7/cwriter/writer.go
generated
vendored
@ -22,17 +22,28 @@ const (
|
|||||||
type Writer struct {
|
type Writer struct {
|
||||||
out io.Writer
|
out io.Writer
|
||||||
buf bytes.Buffer
|
buf bytes.Buffer
|
||||||
lines int
|
lines int // how much lines to clear before flushing new ones
|
||||||
fd int
|
fd int
|
||||||
isTerminal bool
|
terminal bool
|
||||||
|
termSize func(int) (int, int, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// New returns a new Writer with defaults.
|
// New returns a new Writer with defaults.
|
||||||
func New(out io.Writer) *Writer {
|
func New(out io.Writer) *Writer {
|
||||||
w := &Writer{out: out}
|
w := &Writer{
|
||||||
|
out: out,
|
||||||
|
termSize: func(_ int) (int, int, error) {
|
||||||
|
return -1, -1, ErrNotTTY
|
||||||
|
},
|
||||||
|
}
|
||||||
if f, ok := out.(*os.File); ok {
|
if f, ok := out.(*os.File); ok {
|
||||||
w.fd = int(f.Fd())
|
w.fd = int(f.Fd())
|
||||||
w.isTerminal = IsTerminal(w.fd)
|
if IsTerminal(w.fd) {
|
||||||
|
w.terminal = true
|
||||||
|
w.termSize = func(fd int) (int, int, error) {
|
||||||
|
return GetSize(fd)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return w
|
return w
|
||||||
}
|
}
|
||||||
@ -67,13 +78,9 @@ func (w *Writer) ReadFrom(r io.Reader) (n int64, err error) {
|
|||||||
return w.buf.ReadFrom(r)
|
return w.buf.ReadFrom(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWidth returns width of underlying terminal.
|
// GetTermSize returns WxH of underlying terminal.
|
||||||
func (w *Writer) GetWidth() (int, error) {
|
func (w *Writer) GetTermSize() (width, height int, err error) {
|
||||||
if !w.isTerminal {
|
return w.termSize(w.fd)
|
||||||
return -1, ErrNotTTY
|
|
||||||
}
|
|
||||||
tw, _, err := GetSize(w.fd)
|
|
||||||
return tw, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Writer) ansiCuuAndEd() error {
|
func (w *Writer) ansiCuuAndEd() error {
|
||||||
|
2
vendor/github.com/vbauerster/mpb/v7/cwriter/writer_windows.go
generated
vendored
2
vendor/github.com/vbauerster/mpb/v7/cwriter/writer_windows.go
generated
vendored
@ -16,7 +16,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (w *Writer) clearLines() error {
|
func (w *Writer) clearLines() error {
|
||||||
if !w.isTerminal {
|
if !w.terminal {
|
||||||
// hope it's cygwin or similar
|
// hope it's cygwin or similar
|
||||||
return w.ansiCuuAndEd()
|
return w.ansiCuuAndEd()
|
||||||
}
|
}
|
||||||
|
60
vendor/github.com/vbauerster/mpb/v7/decor/on_condition.go
generated
vendored
60
vendor/github.com/vbauerster/mpb/v7/decor/on_condition.go
generated
vendored
@ -1,27 +1,55 @@
|
|||||||
package decor
|
package decor
|
||||||
|
|
||||||
// OnPredicate returns decorator if predicate evaluates to true.
|
// OnCondition applies decorator only if a condition is true.
|
||||||
//
|
|
||||||
// `decorator` Decorator
|
|
||||||
//
|
|
||||||
// `predicate` func() bool
|
|
||||||
//
|
|
||||||
func OnPredicate(decorator Decorator, predicate func() bool) Decorator {
|
|
||||||
if predicate() {
|
|
||||||
return decorator
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// OnCondition returns decorator if condition is true.
|
|
||||||
//
|
//
|
||||||
// `decorator` Decorator
|
// `decorator` Decorator
|
||||||
//
|
//
|
||||||
// `cond` bool
|
// `cond` bool
|
||||||
//
|
//
|
||||||
func OnCondition(decorator Decorator, cond bool) Decorator {
|
func OnCondition(decorator Decorator, cond bool) Decorator {
|
||||||
|
return Conditional(cond, decorator, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnPredicate applies decorator only if a predicate evaluates to true.
|
||||||
|
//
|
||||||
|
// `decorator` Decorator
|
||||||
|
//
|
||||||
|
// `predicate` func() bool
|
||||||
|
//
|
||||||
|
func OnPredicate(decorator Decorator, predicate func() bool) Decorator {
|
||||||
|
return Predicative(predicate, decorator, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conditional returns decorator `a` if condition is true, otherwise
|
||||||
|
// decorator `b`.
|
||||||
|
//
|
||||||
|
// `cond` bool
|
||||||
|
//
|
||||||
|
// `a` Decorator
|
||||||
|
//
|
||||||
|
// `b` Decorator
|
||||||
|
//
|
||||||
|
func Conditional(cond bool, a, b Decorator) Decorator {
|
||||||
if cond {
|
if cond {
|
||||||
return decorator
|
return a
|
||||||
|
} else {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Predicative returns decorator `a` if predicate evaluates to true,
|
||||||
|
// otherwise decorator `b`.
|
||||||
|
//
|
||||||
|
// `predicate` func() bool
|
||||||
|
//
|
||||||
|
// `a` Decorator
|
||||||
|
//
|
||||||
|
// `b` Decorator
|
||||||
|
//
|
||||||
|
func Predicative(predicate func() bool, a, b Decorator) Decorator {
|
||||||
|
if predicate() {
|
||||||
|
return a
|
||||||
|
} else {
|
||||||
|
return b
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
3
vendor/github.com/vbauerster/mpb/v7/priority_queue.go
generated
vendored
3
vendor/github.com/vbauerster/mpb/v7/priority_queue.go
generated
vendored
@ -6,7 +6,8 @@ type priorityQueue []*Bar
|
|||||||
func (pq priorityQueue) Len() int { return len(pq) }
|
func (pq priorityQueue) Len() int { return len(pq) }
|
||||||
|
|
||||||
func (pq priorityQueue) Less(i, j int) bool {
|
func (pq priorityQueue) Less(i, j int) bool {
|
||||||
return pq[i].priority < pq[j].priority
|
// less priority pops first
|
||||||
|
return pq[i].priority > pq[j].priority
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pq priorityQueue) Swap(i, j int) {
|
func (pq priorityQueue) Swap(i, j int) {
|
||||||
|
97
vendor/github.com/vbauerster/mpb/v7/progress.go
generated
vendored
97
vendor/github.com/vbauerster/mpb/v7/progress.go
generated
vendored
@ -12,7 +12,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/vbauerster/mpb/v7/cwriter"
|
"github.com/vbauerster/mpb/v7/cwriter"
|
||||||
"github.com/vbauerster/mpb/v7/decor"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -41,6 +40,7 @@ type pState struct {
|
|||||||
// following are provided/overrided by user
|
// following are provided/overrided by user
|
||||||
idCount int
|
idCount int
|
||||||
reqWidth int
|
reqWidth int
|
||||||
|
popPriority int
|
||||||
popCompleted bool
|
popCompleted bool
|
||||||
outputDiscarded bool
|
outputDiscarded bool
|
||||||
rr time.Duration
|
rr time.Duration
|
||||||
@ -68,6 +68,7 @@ func NewWithContext(ctx context.Context, options ...ContainerOption) *Progress {
|
|||||||
rr: prr,
|
rr: prr,
|
||||||
queueBars: make(map[*Bar]*Bar),
|
queueBars: make(map[*Bar]*Bar),
|
||||||
output: os.Stdout,
|
output: os.Stdout,
|
||||||
|
popPriority: math.MinInt32,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, opt := range options {
|
for _, opt := range options {
|
||||||
@ -118,8 +119,8 @@ func (p *Progress) Add(total int64, filler BarFiller, options ...BarOption) *Bar
|
|||||||
case p.operateState <- func(ps *pState) {
|
case p.operateState <- func(ps *pState) {
|
||||||
bs := ps.makeBarState(total, filler, options...)
|
bs := ps.makeBarState(total, filler, options...)
|
||||||
bar := newBar(p, bs)
|
bar := newBar(p, bs)
|
||||||
if bs.afterBar != nil {
|
if bs.wait.bar != nil {
|
||||||
ps.queueBars[bs.afterBar] = bar
|
ps.queueBars[bs.wait.bar] = bar
|
||||||
} else {
|
} else {
|
||||||
heap.Push(&ps.bHeap, bar)
|
heap.Push(&ps.bHeap, bar)
|
||||||
ps.heapUpdated = true
|
ps.heapUpdated = true
|
||||||
@ -204,33 +205,27 @@ func (p *Progress) serve(s *pState, cw *cwriter.Writer) {
|
|||||||
|
|
||||||
p.refreshCh = s.newTicker(p.done)
|
p.refreshCh = s.newTicker(p.done)
|
||||||
|
|
||||||
|
render := func(debugOut io.Writer) {
|
||||||
|
err := s.render(cw)
|
||||||
|
for err != nil {
|
||||||
|
if debugOut != nil {
|
||||||
|
_, err = fmt.Fprintln(debugOut, err)
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
debugOut = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case op := <-p.operateState:
|
case op := <-p.operateState:
|
||||||
op(s)
|
op(s)
|
||||||
case <-p.refreshCh:
|
case <-p.refreshCh:
|
||||||
if err := s.render(cw); err != nil {
|
render(s.debugOut)
|
||||||
if s.debugOut != nil {
|
|
||||||
_, e := fmt.Fprintln(s.debugOut, err)
|
|
||||||
if e != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case <-s.shutdownNotifier:
|
case <-s.shutdownNotifier:
|
||||||
for s.heapUpdated {
|
for s.heapUpdated {
|
||||||
if err := s.render(cw); err != nil {
|
render(s.debugOut)
|
||||||
if s.debugOut != nil {
|
|
||||||
_, e := fmt.Fprintln(s.debugOut, err)
|
|
||||||
if e != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -245,42 +240,52 @@ func (s *pState) render(cw *cwriter.Writer) error {
|
|||||||
syncWidth(s.pMatrix)
|
syncWidth(s.pMatrix)
|
||||||
syncWidth(s.aMatrix)
|
syncWidth(s.aMatrix)
|
||||||
|
|
||||||
tw, err := cw.GetWidth()
|
width, height, err := cw.GetTermSize()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tw = s.reqWidth
|
width = s.reqWidth
|
||||||
|
height = s.bHeap.Len()
|
||||||
}
|
}
|
||||||
for i := 0; i < s.bHeap.Len(); i++ {
|
for i := 0; i < s.bHeap.Len(); i++ {
|
||||||
bar := s.bHeap[i]
|
bar := s.bHeap[i]
|
||||||
go bar.render(tw)
|
go bar.render(width)
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.flush(cw)
|
return s.flush(cw, height)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *pState) flush(cw *cwriter.Writer) error {
|
func (s *pState) flush(cw *cwriter.Writer, height int) error {
|
||||||
var lines int
|
var popCount int
|
||||||
|
rows := make([]io.Reader, 0, height)
|
||||||
pool := make([]*Bar, 0, s.bHeap.Len())
|
pool := make([]*Bar, 0, s.bHeap.Len())
|
||||||
for s.bHeap.Len() > 0 {
|
for s.bHeap.Len() > 0 {
|
||||||
|
var frameRowsUsed int
|
||||||
b := heap.Pop(&s.bHeap).(*Bar)
|
b := heap.Pop(&s.bHeap).(*Bar)
|
||||||
frame := <-b.frameCh
|
frame := <-b.frameCh
|
||||||
lines += frame.lines
|
for i := len(frame.rows) - 1; i >= 0; i-- {
|
||||||
_, err := cw.ReadFrom(frame.reader)
|
if len(rows) == height {
|
||||||
if err != nil {
|
break
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
if frame.shutdown {
|
rows = append(rows, frame.rows[i])
|
||||||
|
frameRowsUsed++
|
||||||
|
}
|
||||||
|
if frame.shutdown != 0 {
|
||||||
b.Wait() // waiting for b.done, so it's safe to read b.bs
|
b.Wait() // waiting for b.done, so it's safe to read b.bs
|
||||||
var toDrop bool
|
drop := b.bs.dropOnComplete
|
||||||
if qb, ok := s.queueBars[b]; ok {
|
if qb, ok := s.queueBars[b]; ok {
|
||||||
delete(s.queueBars, b)
|
delete(s.queueBars, b)
|
||||||
qb.priority = b.priority
|
qb.priority = b.priority
|
||||||
pool = append(pool, qb)
|
pool = append(pool, qb)
|
||||||
toDrop = true
|
drop = true
|
||||||
} else if s.popCompleted && !b.bs.noPop {
|
} else if s.popCompleted && !b.bs.noPop {
|
||||||
lines -= frame.lines
|
if frame.shutdown > 1 {
|
||||||
toDrop = true
|
popCount += frameRowsUsed
|
||||||
|
drop = true
|
||||||
|
} else {
|
||||||
|
s.popPriority++
|
||||||
|
b.priority = s.popPriority
|
||||||
}
|
}
|
||||||
if toDrop || b.bs.dropOnComplete {
|
}
|
||||||
|
if drop {
|
||||||
s.heapUpdated = true
|
s.heapUpdated = true
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -292,7 +297,14 @@ func (s *pState) flush(cw *cwriter.Writer) error {
|
|||||||
heap.Push(&s.bHeap, b)
|
heap.Push(&s.bHeap, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
return cw.Flush(lines)
|
for i := len(rows) - 1; i >= 0; i-- {
|
||||||
|
_, err := cw.ReadFrom(rows[i])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cw.Flush(len(rows) - popCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *pState) newTicker(done <-chan struct{}) chan time.Time {
|
func (s *pState) newTicker(done <-chan struct{}) chan time.Time {
|
||||||
@ -358,7 +370,6 @@ func (s *pState) makeBarState(total int64, filler BarFiller, options ...BarOptio
|
|||||||
reqWidth: s.reqWidth,
|
reqWidth: s.reqWidth,
|
||||||
total: total,
|
total: total,
|
||||||
filler: filler,
|
filler: filler,
|
||||||
extender: func(r io.Reader, _ int, _ decor.Statistics) (io.Reader, int) { return r, 0 },
|
|
||||||
debugOut: s.debugOut,
|
debugOut: s.debugOut,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,10 +388,6 @@ func (s *pState) makeBarState(total int64, filler BarFiller, options ...BarOptio
|
|||||||
bs.middleware = nil
|
bs.middleware = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.popCompleted && !bs.noPop {
|
|
||||||
bs.priority = -(math.MaxInt32 - s.idCount)
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < len(bs.buffers); i++ {
|
for i := 0; i < len(bs.buffers); i++ {
|
||||||
bs.buffers[i] = bytes.NewBuffer(make([]byte, 0, 512))
|
bs.buffers[i] = bytes.NewBuffer(make([]byte, 0, 512))
|
||||||
}
|
}
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -720,7 +720,7 @@ github.com/ulikunitz/xz/lzma
|
|||||||
github.com/vbatts/tar-split/archive/tar
|
github.com/vbatts/tar-split/archive/tar
|
||||||
github.com/vbatts/tar-split/tar/asm
|
github.com/vbatts/tar-split/tar/asm
|
||||||
github.com/vbatts/tar-split/tar/storage
|
github.com/vbatts/tar-split/tar/storage
|
||||||
# github.com/vbauerster/mpb/v7 v7.4.2
|
# github.com/vbauerster/mpb/v7 v7.5.2
|
||||||
## explicit
|
## explicit
|
||||||
github.com/vbauerster/mpb/v7
|
github.com/vbauerster/mpb/v7
|
||||||
github.com/vbauerster/mpb/v7/cwriter
|
github.com/vbauerster/mpb/v7/cwriter
|
||||||
|
Reference in New Issue
Block a user