use supports_color::Stream;
use tracing::info;
use tracing_subscriber::{fmt, EnvFilter};
use xbp_cli::{api, cli};
fn should_emit_ansi() -> bool {
let disable_via_clicolor = std::env::var("CLICOLOR")
.map(|value| value == "0")
.unwrap_or(false);
if std::env::var_os("NO_COLOR").is_some() || disable_via_clicolor {
return false;
}
if std::env::var_os("FORCE_COLOR").is_some() || std::env::var_os("CLICOLOR_FORCE").is_some() {
return true;
}
supports_color::on(Stream::Stderr).is_some()
}
#[tokio::main]
async fn main() {
fmt()
.with_env_filter(EnvFilter::from_default_env())
.with_ansi(should_emit_ansi())
.init();
if std::env::var("PORT_XBP_API").is_ok() {
info!("Starting XBP API server mode");
if let Err(e) = api::start_api_server().await {
eprintln!("API server error: {}", e);
std::process::exit(1);
}
} else if let Err(e) = cli::run().await {
eprintln!("{}", e);
std::process::exit(1);
}
}