Skip to content

Repository files navigation

progressGoDocBuild StatusGo Report Card

io.Reader and io.Writer with progress and remaining time estimation.

Usage

ctx:=context.Background()
// get a reader and the total expected number of bytess:=`Now that's what I call progress`size:=len(s)
r:=progress.NewReader(strings.NewReader(s))
// Start a goroutine printing progressgofunc() {
ctx:=context.Background()
progressChan:=progress.NewTicker(ctx, r, size, 1*time.Second)
forp:=rangeprogressChan {
fmt.Printf("\r%v remaining...", p.Remaining().Round(time.Second))
}
fmt.Println("\rdownload is completed")
}()
// use the Reader as normalif_, err:=io.Copy(dest, r); err!=nil {
log.Fatalln(err)
}
  1. Wrap an io.Reader or io.Writer with NewReader and NewWriter respectively
  2. Capture the total number of expected bytes
  3. Use progress.NewTicker to get a channel on which progress updates will be sent
  4. Start a Goroutine to periodically check the progress, and do something with it - like log it
  5. Use the readers and writers as normal

Releases

Packages

Used by

Contributors

Languages