devist 0.2.0

Project bootstrap CLI for AI-assisted development. Spin up new projects from templates, manage backends, and keep your codebase comprehensible.
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"]);

    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()
            );
        }
    }
}