use std::process::Command;
use anyhow::Result;
use tracing::{error, info};
#[must_use]
pub fn is_command_available(command: &str) -> bool {
Command::new("which")
.arg(command)
.output()
.is_ok_and(|output| output.status.success())
}
pub fn install_npm_tool(tool: &str) -> Result<()> {
info!("Installing {tool}...");
let output = Command::new("npm").args(["install", "-g", tool]).output()?;
if output.status.success() {
info!("{tool} installed successfully");
Ok(())
} else {
let stderr = String::from_utf8_lossy(&output.stderr);
error!("Failed to install {tool}: {stderr}");
Err(anyhow::anyhow!("Failed to install {tool}"))
}
}