github.com/artyom/spinner (go): Package spinner implements simple "progress spinner" for terminal output.  Spinner expects to have exclusive access to underlying *os.File, that nothing else is writing there while spinner is in use, otherwise output would be broken.  If provided *os.File (usually os.Stdout or os.Sterr) is not attached to a terminal, spinner outputs nothing, that makes it safe to redirect program output to files, pipes, etc.  Spinner can either be used manually, by first creating it with New function, then periodically calling Spin() method on it to refresh output and finally finishing with Clear() method call to clean output; or package-level Spin shortcut function can be used to launch background goroutine that handles output refresh.
Keywords: cli|command-line|terminal