An open API service indexing awesome lists of open source software.

https://github.com/slimtoolkit/uilive

uilive is a go library for updating terminal output in realtime
https://github.com/slimtoolkit/uilive

Last synced: 6 months ago
JSON representation

uilive is a go library for updating terminal output in realtime

Awesome Lists containing this project

README

          

# uilive [![GoDoc](https://godoc.org/github.com/docker-slim/uilive?status.svg)](https://godoc.org/github.com/docker-slim/uilive) [![Build Status](https://travis-ci.org/docker-slim/uilive.svg?branch=master)](https://travis-ci.org/docker-slim/uilive)

## Note

Fixing the os.Exit problem and a few other things...

## Original Package Info

uilive is a go library for updating terminal output in realtime. It provides a buffered [io.Writer](https://golang.org/pkg/io/#Writer) that is flushed at a timed interval. uilive powers [uiprogress](https://github.com/docker-slim/uiprogress).

### Usage Example

Calling `uilive.New()` will create a new writer. To start rendering, simply call `writer.Start()` and update the ui by writing to the `writer`. Full source for the below example is in [example/main.go](example/main.go).

```go
writer := uilive.New()
// start listening for updates and render
writer.Start()

for i := 0; i <= 100; i++ {
fmt.Fprintf(writer, "Downloading.. (%d/%d) GB\n", i, 100)
time.Sleep(time.Millisecond * 5)
}

fmt.Fprintln(writer, "Finished: Downloaded 100GB")
writer.Stop() // flush and stop rendering
```

The above will render

![example](doc/example.gif)

### Installation

```sh
$ go get -v github.com/docker-slim/uilive
```