use colored::{ColoredString, Colorize};
use std::io::{self, Write};
#[must_use]
pub fn cyan(s: &str) -> ColoredString {
s.bright_cyan().bold()
}
#[must_use]
pub fn yellow(s: &str) -> ColoredString {
s.bright_yellow().bold()
}
#[must_use]
pub fn green(s: &str) -> ColoredString {
s.bright_green().bold()
}
#[must_use]
pub fn blue(s: &str) -> ColoredString {
s.bright_blue().bold()
}
#[must_use]
pub fn red(s: &str) -> ColoredString {
s.bright_red().bold()
}
#[must_use]
pub fn magenta(s: &str) -> ColoredString {
s.bright_magenta().bold()
}
#[must_use]
pub fn white(s: &str) -> ColoredString {
s.bright_white().bold()
}
#[must_use]
pub fn dim(s: &str) -> ColoredString {
s.dimmed().bold()
}
pub fn log_info(msg: &str) {
if logs_enabled() {
println!("{}", msg.bright_blue().bold());
}
}
pub fn log_success(msg: &str) {
if logs_enabled() {
println!("{}", msg.bright_green().bold());
}
}
pub fn log_warning(msg: &str) {
if logs_enabled() {
println!("{}", msg.bright_yellow().bold());
}
}
pub fn log_error(msg: &str) {
eprintln!("{}", msg.bright_red().bold());
}
pub fn print_separator() {
if logs_enabled() {
let width = terminal_width();
println!("{}", "-".repeat(width).dimmed());
}
}
fn terminal_width() -> usize {
if let Ok(cols) = std::env::var("COLUMNS") {
if let Ok(width) = cols.parse::<usize>() {
if width > 0 {
return width;
}
}
}
80
}
#[must_use]
pub fn format_config(key: &str, value: &str) -> String {
format!(
" {}: {}",
key.bright_cyan().bold(),
value.bright_yellow().bold()
)
}
#[must_use]
pub fn format_env(key: &str, value: &str) -> String {
format!(
" {}={}",
key.bright_cyan().bold(),
value.bright_yellow().bold()
)
}
#[must_use]
pub fn format_command(cmd: &str) -> String {
format!(" {}", cmd.bright_cyan().bold())
}
pub fn print_config_header() {
log_info("Execution configuration:");
}
pub fn print_env_header() {
log_info("Environment variables:");
}
pub fn print_run_header() {
log_info("Run command:");
}
pub fn flush() {
let _ = io::stdout().flush();
}
fn logs_enabled() -> bool {
std::env::var_os("CARGO_CROSS_SILENT").is_none()
}