Categorygithub.com/zioc/ysmrr
modulepackage
0.0.0-20230218105517-04856c961a54
Repository: https://github.com/zioc/ysmrr.git
Documentation: pkg.go.dev

# README

You spin me right round

Go Reference Go Version GoReportCard

You Spin Me Right Round (ysmrr) is a package that provides simple multi-line compatible spinners for Go applications.

"ysmrr - examples/advanced/main.go"

Installing

go get -u github.com/chelnak/ysmrr

Usage

SpinnerManager

A SpinnerManager is a collection of spinners that share a common configuration.

They can be created as follows:

sm := ysmrr.NewSpinnerManager()

The NewSpinnerManager method also accepts multiple options. For example, you can change the animation and the color of the spinner:

sm := ysmrr.NewSpinnerManager(
    ysmrr.WithAnimation(animations.Pipe),
    ysmrr.WithSpinnerColor(colors.FgHiBlue),
)

A SpinnerManager is also responsible for starting and stopping a group of spinners.

Starting a spinner group

sm.Start()

Stopping a spinner group

sm.Stop()

Spinners

SpinnerManagers are great but pretty useless on their own. You need to add at least one spinner.

Adding a new spinner is as simple as using the AddSpinner method on a SpinnerManager instance.

It expects a string that will be displayed as the initial message of a spinner.

spinner := sm.AddSpinner("Downloading...")

AddSpinner will return a spinner instance that you can use to control the spinner.

Updating the message

Thoughout the lifecycle of a spinner, you can update the message of the spinner.

spinner.UpdateMessage("Downloading...")

Spinner state

A spinner can be set to either Complete or Error to indicate the current state of a task.

spinner.Complete()
spinner.Error()

Example

To tie everything together, here is an example that shows how to build a basic spinner app.

// Create a new spinner manager
sm := ysmrr.NewSpinnerManager()

// Add a spinner
mySpinner := sm.AddSpinner("Spinny things...")

// Start the spinners that have been added to the group
sm.Start()

// Set the spinner to complete
time.Sleep(2 * time.Second)
mySpinner.Complete()

// Stop the spinners in the group
time.Sleep(2 * time.Second)
sm.Stop()

For more usage examples, check out the examples directory.

Inspiration

Ysmrr was inspired by the following projects:

It also uses github.com/fatih/color for the underlying color system and github.com/mattn/go-colorable for Windows support.

# Packages

No description provided by the author
No description provided by the author

# Functions

NewSpinner creates a new spinner instance.
NewSpinnerManager is the constructor for the SpinnerManager.
WithAnimation sets the animation used for the spinners.
WithCompleteColor sets the color of the complete icon.
WithContext sets the context for spinner.
WithErrorColor sets the color of the error icon.
WithFrameDuration sets the duration of each frame.
WithMessageColor sets the color of the message.
WithSpinnerColor sets the color of the spinners.
WithWriter sets the writer used for the spinners.

# Structs

Spinner manages a single spinner.
No description provided by the author

# Interfaces

SpinnerManager manages spinners.