theckman / yacspin

Yet Another CLi Spinner; providing over 80 easy to use and customizable terminal spinners for multiple OSes
Apache License 2.0
434 stars 13 forks source link

Add TerminalMode config; make Frequency optional when not TTY #59

Closed theckman closed 2 years ago

theckman commented 2 years ago

This change introduces a substantial change to how we handle the TTY discovery when constructing the spinner. It adds a new bitflag field to the Config struct, TerminalMode, that allows consumers to control whether the spinner tries to automatically disocver if it's within a TTY and/or a dumb terminal. It also allows you to override the behaviors, if you know the automatic mode won't do what you want.

A side effect of this change is that you can now manually step the spinner animation by setting TerminalMode: ForceNoTTYMode, and then starting the spinner and calling the Message() method when you want to animate the spinner. To permit this, the Frequency field in the Config struct is now not required when calling the New() function. An error will be generated on Start() if it's within a TTY and the Frequency is 0.

This also deprecates the NotTTY field in the Config struct.