use anyhow::Result;
use colored::Colorize;
use std::path::PathBuf;
pub fn normalize_path(s: &str) -> Result<PathBuf> {
let p = PathBuf::from(s);
if p.is_absolute() {
return Ok(p);
}
let cur = std::env::current_dir()?;
Ok(cur.join(p))
}
pub fn strip_first_component(s: &str) -> std::path::PathBuf {
let p = std::path::Path::new(s);
let mut comps = p.components();
comps.next();
comps.as_path().to_path_buf()
}
pub fn print_success(message: &str) {
println!("{} {}", "[SUCCESS]".green().bold(), message);
}
pub fn print_info(message: &str) {
println!("{} {}", "[INFO]".blue().bold(), message);
}
pub fn print_error(message: &str) {
eprintln!("{} {}", "[ERROR]".red().bold(), message);
}
pub fn print_warning(message: &str) {
println!("{} {}", "[WARNING]".yellow().bold(), message);
}
pub fn print_step(message: &str) {
println!("{} {}", "[STEP]".cyan().bold(), message);
}
pub fn is_prerelease_version(version_str: &str) -> bool {
let s = version_str.to_ascii_lowercase();
s.contains("dev") || s.contains("alpha") || s.contains("beta") || s.contains("rc")
}