Skip to content

Latest commit

 

History

History
92 lines (67 loc) · 1.48 KB

README.md

File metadata and controls

92 lines (67 loc) · 1.48 KB

progress

Making a progress for Reader or Writer write/read bytes.

View the docs.

Usage

import "github.com/go-libs/progress"

Writing bytes in progress

import "github.com/go-libs/progress"

filename := "progress_test.go"
f, err := os.Open(filename)
defer f.Close()
if err != nil {
  log.Fatalln(err)
}
fs, err := os.Stat(filename)
if err != nil {
  log.Fatalln(err)
}

p := Progress.New()
p.Total = fs.Size()
p.Progress = func(current, total, expected int64) {
  log.Println("Writing", current, total, expected)
}

b := new(bytes.Buffer)
w := io.MultiWriter(p, b)
_, err = io.Copy(w, f)
if err != nil {
  log.Fatalln(err)
}

Reading bytes in progress

import "github.com/go-libs/syncreader"
import "github.com/go-libs/progress"

filename := "progress_test.go"
f, err := os.Open(filename)
defer f.Close()
if err != nil {
  log.Fatalln(err)
}
fs, err := os.Stat(filename)
if err != nil {
  log.Fatalln(err)
}

p := Progress.New()
p.Total = fs.Size()
p.Progress = func(current, total, expected int64) {
  log.Println("Reading", current, total, expected)
}

b := new(bytes.Buffer)
r := syncreader.New(f, p)
_, err = b.ReadFrom(r)
if err != nil {
  log.Fatalln(err)
}

Using IgnoreTotal flag to ignore total size in Progress initialization.

p := Progress.New()
p.IgnoreTotal = true
p.Progress = func(current, total, expected int64) {
  log.Println("Reading", current, total, expected)
}