lesavka/client/src/main.rs

71 lines
2.0 KiB
Rust
Raw Normal View History

2025-06-08 22:24:14 -05:00
// client/src/main.rs
2025-06-01 16:04:00 -05:00
#![forbid(unsafe_code)]
use anyhow::Result;
use std::{env, fs::OpenOptions, path::Path};
use tracing_appender::non_blocking;
use tracing_appender::non_blocking::WorkerGuard;
use tracing_subscriber::{filter::EnvFilter, fmt, prelude::*};
2025-06-01 13:31:22 -05:00
2025-06-21 05:21:57 -05:00
use navka_client::NavkaClientApp;
2025-06-01 13:31:22 -05:00
#[tokio::main]
async fn main() -> Result<()> {
/*------------- common filter & stderr layer ------------------------*/
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| {
EnvFilter::new(
"navka_client=trace,\
navka_server=trace,\
tonic=debug,\
h2=debug,\
tower=debug",
)
});
let stderr_layer = fmt::layer()
.with_target(true)
.with_thread_ids(true)
.with_file(true);
2025-06-16 00:05:39 -05:00
2025-06-08 12:47:11 -05:00
let dev_mode = env::var("NAVKA_DEV_MODE").is_ok();
let mut _guard: Option<WorkerGuard> = None; // keep guard alive
2025-06-08 12:47:11 -05:00
/*------------- subscriber setup -----------------------------------*/
2025-06-08 12:47:11 -05:00
if dev_mode {
let log_path = Path::new("/tmp").join("navka-client.log");
// file → nonblocking writer (+ guard)
2025-06-08 12:47:11 -05:00
let file = OpenOptions::new()
.create(true)
2025-06-17 23:42:24 -05:00
.write(true)
2025-06-18 01:41:11 -05:00
// .truncate(true)
.open(&log_path)?;
let (file_writer, guard) = non_blocking(file);
_guard = Some(guard);
let file_layer = fmt::layer()
.with_writer(file_writer)
.with_ansi(false)
.with_target(true)
.with_level(true);
tracing_subscriber::registry()
.with(env_filter)
.with(stderr_layer)
.with(file_layer)
.init();
tracing::info!("navka-client running in DEV mode → {}", log_path.display());
2025-06-08 12:47:11 -05:00
} else {
tracing_subscriber::registry()
.with(env_filter)
.with(stderr_layer)
.init();
2025-06-08 12:47:11 -05:00
}
2025-06-06 00:21:20 -05:00
/*------------- run the actual application -------------------------*/
2025-06-08 04:11:58 -05:00
let mut app = NavkaClientApp::new()?;
app.run().await
}