Skip to content

Repository files navigation

spin

License Go Reference Go Report Card GitHub CI

A very simple terminal spinner

demo

Project Description

I needed a very simple, minimal overhead, nice looking terminal spinner that didn't bring in a shed load of dependencies. So here it is!

It has a few nicities:

  • Auto terminal detection and colouring via hue
  • Customisable colours
  • Custom progress message
  • Simple and convenient API

Installation

go get go.followtheprocess.codes/spin@latest

Quickstart

package main

import (
    "os"
    "time"
    
    "go.followtheprocess.codes/spin"
)

func main() {
    spinner := spin.New(os.Stdout, "Digesting")

    spinner.Start()
    defer spinner.Stop()

    time.Sleep(2 * time.Second)
}

You can also wrap a function in a spinner...

package main

import (
    "os"
    "time"
    
    "go.followtheprocess.codes/spin"
)

func main() {
    spinner := spin.New(os.Stdout, "Digesting")

    // This is equivalent to the example above, Do will handle
    // starting and stopping the spinner for you
    spinner.Do(func() {
        time.Sleep(2 * time.Second)
    })
}

Credits

This package was created with copier and the FollowTheProcess/go_copier project template.

About

A simple terminal spinner

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages