mod cli;
mod fmu_wrap;
mod import;
mod inspect;
mod kinds;
mod run;
mod scaffold;
mod setup;
mod summary;
mod tui;
use std::io::IsTerminal;
use std::process::ExitCode;
use clap::Parser;
fn main() -> ExitCode {
let cli = cli::Cli::parse();
match cli.command {
cli::Command::Tui { .. } => {}
cli::Command::Run { .. } => init_logging("info"),
_ => init_logging("warn"),
}
match cli::dispatch(cli.command) {
Ok(code) => code,
Err(e) => {
eprintln!("error: {e:#}");
ExitCode::FAILURE
}
}
}
fn init_logging(level: &str) {
let default = format!(
"{level},opcua_server=error,opcua_core=warn,opcua_crypto=warn,\
opcua_crypto::certificate_store=off,opcua_core::comms::secure_channel=off"
);
let filter = tracing_subscriber::EnvFilter::try_from_default_env()
.unwrap_or_else(|_| tracing_subscriber::EnvFilter::new(default));
tracing_subscriber::fmt()
.with_env_filter(filter)
.with_writer(std::io::stderr)
.with_ansi(std::io::stderr().is_terminal())
.init();
}