ui-cli 0.3.8

A CLI to add components to your app.
Documentation
use std::time::Duration;

use indicatif::ProgressBar;

const SPINNER_UPDATE_DURATION: u64 = 100;

pub struct TaskSpinner {
    spinner: ProgressBar,
}

impl TaskSpinner {
    pub fn new(message: &str) -> Self {
        let spinner = ProgressBar::new_spinner();
        spinner.set_message(message.to_string());
        spinner.enable_steady_tick(Duration::from_millis(SPINNER_UPDATE_DURATION));
        Self { spinner }
    }

    pub fn set_message(&self, message: &str) {
        self.spinner.set_message(message.to_string());
    }

    pub fn finish_success(self, message: &str) {
        self.spinner.finish_with_message(format!("✔️ {message}"));
    }

    pub fn finish_with_message(self, message: &str) {
        self.spinner.finish_with_message(message.to_string());
    }
}