Skip to content
/ chin Public

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

License

Notifications You must be signed in to change notification settings

adhocore/chin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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()

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()

chin.Default is selected by default so you don't have to specify it.

You can also define your own spinner set with delay and animation chars like so:

// Animates 0 to 4 in a gap of 50ms:
s := chin.New(chin.Set{50*time.Millisecond, []string{"0", "1", "2", "3", "4", "3", "2", "1"}})
go s.Start()

Screen

CHIN


Other projects

My other golang projects you might find interesting and useful:

  • gronx - Lightweight, fast and dependency-free Cron expression parser (due checker), task scheduler and/or daemon for Golang (tested on v1.13 and above) and standalone usage.
  • urlsh - URL shortener and bookmarker service with UI, API, Cache, Hits Counter and forwarder using postgres and redis in backend, bulma in frontend; has web and cli client.
  • fast - Check your internet speed with ease and comfort right from the terminal. (It uses adhocore/chin.)
  • goic - Go Open ID Connect, is OpenID connect client library for Golang, supports the Authorization Code Flow of OpenID Connect specification.
  • jsonc - Golang JSON parser supporting comments, trailing commas and literal newlines.