diff --git a/lib/crates/arc-cli/Cargo.toml b/lib/crates/arc-cli/Cargo.toml index 04c702a4f..354db6dc5 100644 --- a/lib/crates/arc-cli/Cargo.toml +++ b/lib/crates/arc-cli/Cargo.toml @@ -26,6 +26,7 @@ arc-api = { path = "../arc-api", optional = true } arc-util = { path = "../arc-util" } clap.workspace = true console.workspace = true +indicatif.workspace = true daytona-sdk.workspace = true anyhow.workspace = true dotenvy.workspace = true diff --git a/lib/crates/arc-cli/src/doctor.rs b/lib/crates/arc-cli/src/doctor.rs index 5b1b025c2..45efda0ff 100644 --- a/lib/crates/arc-cli/src/doctor.rs +++ b/lib/crates/arc-cli/src/doctor.rs @@ -921,6 +921,15 @@ async fn probe_url(http: &reqwest::Client, url: &str) -> Result<(), String> { pub async fn run_doctor(verbose: bool, live: bool) -> i32 { let styles = Styles::detect_stdout(); + let spinner = indicatif::ProgressBar::new_spinner(); + spinner.set_style( + indicatif::ProgressStyle::with_template("{spinner:.cyan} {msg}") + .expect("valid template") + .tick_strings(&["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏", ""]), + ); + spinner.set_message("Running checks…"); + spinner.enable_steady_tick(std::time::Duration::from_millis(80)); + // Gather state let cli_config = arc_config::cli::load_cli_config(None).unwrap_or_default(); @@ -1128,6 +1137,8 @@ pub async fn run_doctor(verbose: bool, live: bool) -> i32 { checks, }; + spinner.finish_and_clear(); + let term_width = console::Term::stderr().size().1; print!( "{}",