use anyhow::Result;
use console::style;
use std::process::Command;
pub fn run() -> Result<()> {
println!("{}", style("devist doctor").bold());
println!();
check("git", &["--version"]);
check("docker", &["--version"]);
check("node", &["--version"]);
check("pnpm", &["--version"]);
check("supabase", &["--version"]);
check("claude", &["--version"]);
println!();
Ok(())
}
fn check(name: &str, args: &[&str]) {
let result = Command::new(name).args(args).output();
match result {
Ok(output) if output.status.success() => {
let version = String::from_utf8_lossy(&output.stdout)
.lines()
.next()
.unwrap_or("")
.trim()
.to_string();
println!(
" {} {:10} {}",
style("[OK]").green(),
name,
style(version).dim()
);
}
_ => {
println!(
" {} {:10} {}",
style("[MISS]").red(),
name,
style("not installed").dim()
);
}
}
}