.package(url: "https://github.com/kiliankoe/CLISpinner", from: "see latest release")
Usage
Just want to display a simple spinner for two seconds?
let s = Spinner(pattern: .dots)
s.start()
sleep(2)
s.stop()
Want some changing text and patterns?
let s = Spinner(pattern: .dots, text: "Foobar...", color: .lightCyan)
s.start()
sleep(2)
s.succeed(text: "Barfoo")
// will change the displayed text to '✔ Barfoo'
Made your own custom pattern?
let pattern = try Pattern.load(from: "/path/to/your/pattern.json")
let s = spinner(pattern: pattern)
s.start()
sleep(2)
s.stop()
To look nice the spinner hides the user’s cursor as long as it’s running and displays it again when stopped. The issue with this is that the cursor will still be hidden if the user interrupts the process (by sending a SIGINT through ctrl+c for example). The best way to handle this is by setting up a signal handler in your code and calling spinner.unhideCursor() on exiting. This library purposefully does not do that for you so as not to interfere with any possible signal handlers you might already have set up.
See IBM-Swift/BlueSignals for a clean and safe way of handling signals. The appropriate signal handler for your project could look something like this.
import Signals
let spinner = Spinner(pattern: .dots)
// ...
Signals.trap(signal: .int) { _ in
spinner.unhideCursor()
exit(0)
}
CLISpinner
Shamelessly ripped off from sindresorhus/cli-spinners.
Install
Usage
Just want to display a simple spinner for two seconds?
Want some changing text and patterns?
Made your own custom pattern?
Want all the patterns from sindresorhus/cli-spinners?
That’s basically it 👌
Creating your own Pattern
The
Pattern
type can read in patterns from a JSON file using the following format:To keep multiple patterns in a single file:
Caveat
To look nice the spinner hides the user’s cursor as long as it’s running and displays it again when stopped. The issue with this is that the cursor will still be hidden if the user interrupts the process (by sending a SIGINT through ctrl+c for example). The best way to handle this is by setting up a signal handler in your code and calling
spinner.unhideCursor()
on exiting. This library purposefully does not do that for you so as not to interfere with any possible signal handlers you might already have set up.See IBM-Swift/BlueSignals for a clean and safe way of handling signals. The appropriate signal handler for your project could look something like this.
Used by