use std::path::PathBuf;
use tracing_subscriber::filter::EnvFilter;
use tracing_subscriber::prelude::*;
pub fn init(mode: &str) -> crate::AppResult<()> {
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("eqtui=info"));
let is_tui = matches!(mode, "attach" | "");
let subscriber = tracing_subscriber::registry().with(filter);
if is_tui {
let log_dir = dirs::data_dir()
.unwrap_or_else(|| PathBuf::from("/tmp"))
.join("eqtui");
std::fs::create_dir_all(&log_dir)?;
let log_file = std::fs::OpenOptions::new()
.create(true)
.append(true)
.open(log_dir.join("eqtui-tui.log"))?;
subscriber
.with(
tracing_subscriber::fmt::layer()
.with_ansi(false)
.with_writer(std::sync::Mutex::new(log_file)),
)
.with(tracing_error::ErrorLayer::default())
.init();
} else {
subscriber
.with(tracing_subscriber::fmt::layer().with_writer(std::io::stderr))
.with(tracing_error::ErrorLayer::default())
.init();
}
Ok(())
}