mirror of
https://github.com/schollz/croc.git
synced 2024-11-28 09:35:14 +03:00
Add new dependencies
This commit is contained in:
parent
e24d37db7d
commit
b3c7a6aa08
13
vendor/github.com/schollz/progressbar/README.md
generated
vendored
Normal file
13
vendor/github.com/schollz/progressbar/README.md
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
<p align="center">
|
||||
<img
|
||||
src="logo.png"
|
||||
width="100%" border="0" alt="progressbar">
|
||||
<br>
|
||||
<a href="https://travis-ci.org/schollz/progressbar"><img src="https://travis-ci.org/schollz/progressbar.svg?branch=master" alt="Build Status"></a>
|
||||
<a href="https://goreportcard.com/report/github.com/schollz/progressbar"><img src="https://goreportcard.com/badge/github.com/schollz/progressbar" alt="Go Report Card"></a>
|
||||
<a href="https://godoc.org/github.com/schollz/progressbar"><img src="https://godoc.org/github.com/schollz/progressbar?status.svg" alt="GoDoc"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">A very simple progress bar.</p>
|
||||
|
||||
See the godocs for more info.
|
16
vendor/github.com/schollz/progressbar/examples/main.go
generated
vendored
Normal file
16
vendor/github.com/schollz/progressbar/examples/main.go
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/schollz/progressbar"
|
||||
)
|
||||
|
||||
func main() {
|
||||
bar := progressbar.New(100)
|
||||
bar.Reset()
|
||||
for i := 0; i < 100; i++ {
|
||||
bar.Add(1)
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
}
|
110
vendor/github.com/schollz/progressbar/progressbar.go
generated
vendored
Normal file
110
vendor/github.com/schollz/progressbar/progressbar.go
generated
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
package progressbar
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// ProgressBar is a thread-safe, simple
|
||||
// progress bar
|
||||
type ProgressBar struct {
|
||||
max int // max number of the counter
|
||||
size int // size of the saucer
|
||||
currentNum int
|
||||
currentPercent int
|
||||
lastPercent int
|
||||
currentSaucerSize int
|
||||
|
||||
lastShown time.Time
|
||||
startTime time.Time
|
||||
w io.Writer
|
||||
|
||||
// symbols
|
||||
symbolFinished string
|
||||
symbolLeft string
|
||||
leftBookend string
|
||||
rightBookend string
|
||||
sync.RWMutex
|
||||
}
|
||||
|
||||
// New returns a new ProgressBar
|
||||
// with the specified maximum
|
||||
func New(max int) *ProgressBar {
|
||||
p := new(ProgressBar)
|
||||
p.Lock()
|
||||
defer p.Unlock()
|
||||
p.max = max
|
||||
p.size = 40
|
||||
p.symbolFinished = "█"
|
||||
p.symbolLeft = " "
|
||||
p.leftBookend = "|"
|
||||
p.rightBookend = "|"
|
||||
p.w = os.Stdout
|
||||
p.lastShown = time.Now()
|
||||
p.startTime = time.Now()
|
||||
return p
|
||||
}
|
||||
|
||||
// Reset will reset the clock
|
||||
func (p *ProgressBar) Reset() {
|
||||
p.Lock()
|
||||
defer p.Unlock()
|
||||
p.lastShown = time.Now()
|
||||
p.startTime = time.Now()
|
||||
}
|
||||
|
||||
// Set the max of the progress bar
|
||||
func (p *ProgressBar) SetMax(num int) {
|
||||
p.Lock()
|
||||
defer p.Unlock()
|
||||
p.max = num
|
||||
}
|
||||
|
||||
// Add a certain amount to the progress bar
|
||||
func (p *ProgressBar) Add(num int) error {
|
||||
p.Lock()
|
||||
p.currentNum += num
|
||||
percent := float64(p.currentNum) / float64(p.max)
|
||||
p.currentSaucerSize = int(percent * float64(p.size))
|
||||
p.currentPercent = int(percent * 100)
|
||||
updateBar := p.currentPercent != p.lastPercent && p.currentPercent > 0
|
||||
p.lastPercent = p.currentPercent
|
||||
p.Unlock()
|
||||
if updateBar {
|
||||
return p.Show()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Show will print the current progress bar
|
||||
func (p *ProgressBar) Show() error {
|
||||
p.RLock()
|
||||
defer p.RUnlock()
|
||||
if p.currentNum > p.max {
|
||||
return errors.New("current number exceeds max")
|
||||
}
|
||||
secondsLeft := time.Since(p.startTime).Seconds() / float64(p.currentNum) * (float64(p.max) - float64(p.currentNum))
|
||||
s := fmt.Sprintf("\r%3d%% %s%s%s%s [%s:%s] ",
|
||||
p.currentPercent,
|
||||
p.leftBookend,
|
||||
strings.Repeat(p.symbolFinished, p.currentSaucerSize),
|
||||
strings.Repeat(p.symbolLeft, p.size-p.currentSaucerSize),
|
||||
p.rightBookend,
|
||||
time.Since(p.startTime).Round(time.Second).String(),
|
||||
(time.Duration(secondsLeft) * time.Second).String(),
|
||||
)
|
||||
|
||||
_, err := io.WriteString(p.w, s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if f, ok := p.w.(*os.File); ok {
|
||||
f.Sync()
|
||||
}
|
||||
return nil
|
||||
}
|
9
vendor/github.com/schollz/progressbar/progressbar_test.go
generated
vendored
Normal file
9
vendor/github.com/schollz/progressbar/progressbar_test.go
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
package progressbar
|
||||
|
||||
func ExampleBar() {
|
||||
bar := New(10)
|
||||
bar.Add(1)
|
||||
|
||||
// Output:
|
||||
// 10% |████ | [0s:0s]
|
||||
}
|
Loading…
Reference in New Issue
Block a user