DEV Community

Jitendra
Jitendra

Posted on

A spinner (aka loading animation) for terminal in Go

GitHub logo adhocore / chin

A Go lang library to show a spinner as user waits for any long running jobs to finish.

adhocore/chin

Go Report Lint Tweet Support

A Golang command line tool to show a spinner as you wait for some long running jobs to finish.

This is a simple project but carries a tremendous value to me [❤️].

Usage

Install chin:

go get -u github.com/adhocore/chin
Enter fullscreen mode Exit fullscreen mode

Use in Go code with WaitGroup:

var wg sync.WaitGroup

s := chin.New().WithWait(&wg)
go s.Start()

// invoke some long running task
// (you can also call s.Stop() from that task)
longTask(&wg)

s.Stop()
wg.Wait()
Enter fullscreen mode Exit fullscreen mode

Refer and run working examples with: go run examples/main.go

Custom Spinner

You can choose from provided spinner sets chin.Default, chin.Arrows and chin.Dots:

s := chin.New(chin.Arrows)
// or
s := chin.New(chin.Dots)

go s.Start()
Enter fullscreen mode Exit fullscreen mode

chin.Default is selected…

Usage

Install chin:

go get -u github.com/adhocore/chin
Enter fullscreen mode Exit fullscreen mode

Use in Go code with WaitGroup:

var wg sync.WaitGroup

s := chin.New().WithWait(&wg)
go s.Start()

// invoke some long running task
// (you can also call s.Stop() from that task)
longTask(&wg)

s.Stop()
wg.Wait()
Enter fullscreen mode Exit fullscreen mode

Refer example for more (there is also one without waitgroup).

Screen

CHIN

Feedback?

Just drop a comment here, or open issues/PR in the repo. Thanks. 😎

Top comments (0)