MCPcopy Index your code
hub / github.com/schollz/progressbar

github.com/schollz/progressbar @v3.19.1 sqlite

repository ↗ · DeepWiki ↗ · release v3.19.1 ↗
163 symbols 1,016 edges 11 files 77 documented · 47%
README

progressbar

CI go report card coverage godocs

A very simple thread-safe progress bar which should work on every OS without problems. I needed a progressbar for croc and everything I tried had problems, so I made another one. In order to be OS agnostic I do not plan to support multi-line outputs.

Install

go get -u github.com/schollz/progressbar/v3

Usage

Basic usage

bar := progressbar.Default(100)
for i := 0; i < 100; i++ {
    bar.Add(1)
    time.Sleep(40 * time.Millisecond)
}

which looks like:

Example of basic bar

I/O operations

The progressbar implements an io.Writer so it can automatically detect the number of bytes written to a stream, so you can use it as a progressbar for an io.Reader.

req, _ := http.NewRequest("GET", "https://dl.google.com/go/go1.14.2.src.tar.gz", nil)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()

f, _ := os.OpenFile("go1.14.2.src.tar.gz", os.O_CREATE|os.O_WRONLY, 0644)
defer f.Close()

bar := progressbar.DefaultBytes(
    resp.ContentLength,
    "downloading",
)
io.Copy(io.MultiWriter(f, bar), resp.Body)

which looks like:

Example of download bar

Progress bar with unknown length

A progressbar with unknown length is a spinner. Any bar with -1 length will automatically convert it to a spinner with a customizable spinner type. For example, the above code can be run and set the resp.ContentLength to -1.

which looks like:

Example of download bar with unknown length

Customization

There is a lot of customization that you can do - change the writer, the color, the width, description, theme, etc. See all the options.

bar := progressbar.NewOptions(1000,
    progressbar.OptionSetWriter(ansi.NewAnsiStdout()), //you should install "github.com/k0kubun/go-ansi"
    progressbar.OptionEnableColorCodes(true),
    progressbar.OptionShowBytes(true),
    progressbar.OptionSetWidth(15),
    progressbar.OptionSetDescription("[cyan][1/3][reset] Writing moshable file..."),
    progressbar.OptionSetTheme(progressbar.Theme{
        Saucer:        "[green]=[reset]",
        SaucerHead:    "[green]>[reset]",
        SaucerPadding: " ",
        BarStart:      "[",
        BarEnd:        "]",
    }))
for i := 0; i < 1000; i++ {
    bar.Add(1)
    time.Sleep(5 * time.Millisecond)
}

which looks like:

Example of customized bar

Contributing

Pull requests are welcome. Feel free to...

  • Revise documentation
  • Add new features
  • Fix bugs
  • Suggest improvements

Thanks

Thanks @Dynom for massive improvements in version 2.0!

Thanks @CrushedPixel for adding descriptions and color code support!

Thanks @MrMe42 for adding some minor features!

Thanks @tehstun for some great PRs!

Thanks @Benzammour and @haseth for helping create v3!

Thanks @briandowns for compiling the list of spinners.

License

MIT

Extension points exported contracts — how you extend this code

Option (FuncType)
Option is the type all options need to adhere to
progressbar.go

Core symbols most depended-on inside this repo

Add
called by 71
progressbar.go
String
called by 55
progressbar.go
NewOptions
called by 47
progressbar.go
OptionSetWidth
called by 44
progressbar.go
OptionSetWriter
called by 31
progressbar.go
OptionShowCount
called by 29
progressbar.go
Reset
called by 28
progressbar.go
OptionShowIts
called by 23
progressbar.go

Shape

Function 124
Method 32
Struct 6
FuncType 1

Languages

Go100%

Modules by API surface

progressbar.go90 symbols
progressbar_test.go64 symbols
examples/download/main.go2 symbols
examples/theme-unicode/main.go1 symbols
examples/theme-ascii/main.go1 symbols
examples/pacman/main.go1 symbols
examples/download-unknown/main.go1 symbols
examples/customization/main.go1 symbols
examples/counter/main.go1 symbols
examples/basic/main.go1 symbols

Dependencies from manifests, versioned

github.com/chengxilo/virtualtermv1.0.4 · 1×
github.com/k0kubun/go-ansiv0.0.0-2018051700251 · 1×
github.com/mattn/go-isattyv0.0.22 · 1×
github.com/mattn/go-runewidthv0.0.16 · 1×
github.com/mitchellh/colorstringv0.0.0-2019021321295 · 1×
github.com/pmezard/go-difflibv1.0.0 · 1×
github.com/rivo/unisegv0.4.7 · 1×
golang.org/x/sysv0.46.0 · 1×
golang.org/x/termv0.44.0 · 1×
gopkg.in/yaml.v3v3.0.1 · 1×

For agents

$ claude mcp add progressbar \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact