use dotenv::dotenv;
use nisshi_broker::{TracingFormat, otel};
use nisshi_cli::{Cli, Result};
use nisshi_sans_io::ErrorCode;
use tracing::{debug, error};
const CLIENT_ERROR_MESSAGE: &str = "A client error occurred. Possible causes:
• No network connection
• The server is down or unreachable
• Incorrect hostname or port
• Firewall or proxy blocking the connection
• TLS/SSL certificate issues (if applicable)
Check your internet connection, verify the server address, and try again.";
#[tokio::main]
async fn main() -> Result<ErrorCode> {
_ = dotenv().ok();
let _guard = otel::init(TracingFormat::Text)?;
Cli::main()
.await
.inspect(|error_code| match error_code {
ErrorCode::None => debug!("{}", error_code),
_ => error!("{}", error_code),
})
.inspect_err(|err| match err {
nisshi_cli::Error::Cat(error) => match &**error {
nisshi_cat::Error::Client(_) => error!("{}", CLIENT_ERROR_MESSAGE),
_ => error!("Unknown error occurred during command: {}", error),
},
nisshi_cli::Error::Generate(error) => match error {
nisshi_generator::Error::Client(_) => error!("{}", CLIENT_ERROR_MESSAGE),
_ => error!("Unknown error occurred during command: {}", error),
},
nisshi_cli::Error::Perf(error) => match error {
nisshi_perf::Error::Client(_) => error!("{}", CLIENT_ERROR_MESSAGE),
_ => error!("Unknown error occurred during command: {}", error),
},
nisshi_cli::Error::Proxy(error) => match error {
nisshi_proxy::Error::Client(_) => error!("{}", CLIENT_ERROR_MESSAGE),
_ => error!("Unknown error occurred during command: {}", error),
},
nisshi_cli::Error::Topic(error) => match error {
nisshi_topic::Error::Client(_) => error!("{}", CLIENT_ERROR_MESSAGE),
_ => error!("Unknown error occurred during command: {}", error),
},
_ => error!("Unknown error occurred during command: {}", err),
})
}