uilive GoDoc Build Status

uilive is a go library for updating terminal output in realtime. It provides a buffered io.Writer that is flushed at a timed interval. uilive powers 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.

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

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



$ go get -v
Expand ▾ Collapse ▴



    Package uilive provides a writer that live updates the terminal. It provides a buffered io.Writer that is flushed at a timed interval.





    View Source
    const ESC = 27

      ESC is the ASCII code for escape character


      View Source
      var ErrClosedPipe = errors.New("uilive: read/write on closed pipe")

        ErrClosedPipe is the error returned when trying to writer is not listening

          Out is the default output writer for the Writer

          View Source
          var RefreshInterval = time.Millisecond

            RefreshInterval is the default refresh interval to update the ui


            This section is empty.


            type FdWriter

            type FdWriter interface {
            	Fd() uintptr

              FdWriter is a writer with a file descriptor.

              type Writer

              type Writer struct {
              	// Out is the writer to write to
              	Out io.Writer
              	// RefreshInterval is the time the UI sould refresh
              	RefreshInterval time.Duration
              	// contains filtered or unexported fields

                Writer is a buffered the writer that updates the terminal. The contents of writer will be flushed on a timed interval or when Flush is called.

                func New

                func New() *Writer

                  New returns a new Writer with defaults

                  func (*Writer) Bypass

                  func (w *Writer) Bypass() io.Writer

                    Bypass creates an io.Writer which allows non-buffered output to be written to the underlying output

                    func (*Writer) Flush

                    func (w *Writer) Flush() error

                      Flush writes to the out and resets the buffer. It should be called after the last call to Write to ensure that any data buffered in the Writer is written to output. Any incomplete escape sequence at the end is considered complete for formatting purposes. An error is returned if the contents of the buffer cannot be written to the underlying output stream

                      func (*Writer) Listen

                      func (w *Writer) Listen()

                        Listen listens for updates to the writer's buffer and flushes to the out provided. It blocks the runtime.

                        func (*Writer) Newline

                        func (w *Writer) Newline() io.Writer

                          Newline creates an io.Writer which allows buffered output to be written to the underlying output. This enable writing to multiple lines at once.

                          func (*Writer) Start

                          func (w *Writer) Start()

                            Start starts the listener in a non-blocking manner

                            func (*Writer) Stop

                            func (w *Writer) Stop()

                              Stop stops the listener that updates the terminal

                              func (*Writer) Write

                              func (w *Writer) Write(buf []byte) (n int, err error)

                                Write save the contents of buf to the writer b. The only errors returned are ones encountered while writing to the underlying buffer.


                                Path Synopsis