Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A really basic thread-safe progress bar for Golang applications

License

NotificationsYou must be signed in to change notification settings

schollz/progressbar

Repository files navigation

CIgo report cardcoveragegodocs

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

Install

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

Usage

Basic usage

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

which looks like:

Example of basic bar

I/O operations

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

req,_:=http.NewRequest("GET","https://dl.google.com/go/go1.14.2.src.tar.gz",nil)resp,_:=http.DefaultClient.Do(req)deferresp.Body.Close()f,_:=os.OpenFile("go1.14.2.src.tar.gz",os.O_CREATE|os.O_WRONLY,0644)deferf.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 theresp.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. Seeall 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:"]",    }))fori:=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


[8]ページ先頭

©2009-2025 Movatter.jp