use std::time::Duration;
use indicatif::{ProgressBar, ProgressDrawTarget, ProgressStyle};
use crate::output::stderr_is_tty;
#[must_use]
pub fn make_spinner(enabled: bool, message: &str) -> Option<ProgressBar> {
if !enabled || !stderr_is_tty() {
return None;
}
let progress_bar = ProgressBar::with_draw_target(None, ProgressDrawTarget::stderr());
progress_bar.set_style(
ProgressStyle::default_spinner()
.template("{spinner:.green} {msg}")
.expect("the spinner template is a compile-time constant"),
);
progress_bar.set_message(message.to_owned());
progress_bar.enable_steady_tick(Duration::from_millis(120));
Some(progress_bar)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn make_spinner_returns_none_when_disabled() {
assert!(make_spinner(false, "x").is_none());
}
}