Categorygithub.com/chanced/progress
modulepackage
0.2.1
Repository: https://github.com/chanced/progress.git
Documentation: pkg.go.dev

# README

progress

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

Usage

ctx := context.Background()

// get a reader and the total expected number of bytes
s := `Now that's what I call progress`
size := len(s)
r := progress.NewReader(strings.NewReader(s))

// Start a goroutine printing progress
go func() {
	ctx := context.Background()
	progressChan := progress.NewTicker(ctx, r, size, 1*time.Second)
	for p := range progressChan {
		fmt.Printf("\r%v remaining...", p.Remaining().Round(time.Second))
	}
	fmt.Println("\rdownload is completed")
}()

// use the Reader as normal
if _, 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

# Packages

No description provided by the author

# Functions

NewReader makes a new Reader that counts the bytes read through it.
NewTicker gets a channel on which ticks of Progress are sent at duration d intervals until the operation is complete at which point the channel is closed.
NewWriter gets a Writer that counts the number of bytes written.

# Structs

Progress represents a moment of progress.
Reader counts the bytes read through it.
Writer counts the bytes written through it.

# Interfaces

Counter counts bytes.