xbp 10.28.0

XBP is a zero-config build pack that can also interact with proxies, kafka, sockets, synthetic monitors.
Documentation
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);
    }
}