mirror of
https://gitlab.com/marcandre.lureau/qemu-display.git
synced 2025-04-14 08:44:46 +00:00
60 lines
1.4 KiB
Rust
60 lines
1.4 KiB
Rust
use anyhow::Context;
|
||
use qemu_display::zbus;
|
||
|
||
mod args;
|
||
mod server;
|
||
mod util;
|
||
|
||
#[tokio::main]
|
||
async fn main() -> Result<(), anyhow::Error> {
|
||
let mut args = args::parse();
|
||
|
||
setup_logging(args.log_file.as_str()).context("unable to initialize logging")?;
|
||
|
||
let dbus = match args.dbus_address.take() {
|
||
None => zbus::Connection::session().await,
|
||
Some(addr) => {
|
||
zbus::ConnectionBuilder::address(addr.as_str())?
|
||
.build()
|
||
.await
|
||
}
|
||
}
|
||
.expect("Failed to connect to DBus");
|
||
|
||
server::Server::new(dbus, args.server).run().await?;
|
||
|
||
Ok(())
|
||
}
|
||
|
||
fn setup_logging(log_file: &str) -> anyhow::Result<()> {
|
||
use std::fs::OpenOptions;
|
||
|
||
use tracing::metadata::LevelFilter;
|
||
use tracing_subscriber::prelude::*;
|
||
use tracing_subscriber::EnvFilter;
|
||
|
||
let file = OpenOptions::new()
|
||
.create(true)
|
||
.append(true)
|
||
.open(log_file)
|
||
.with_context(|| format!("couldn’t open {log_file}"))?;
|
||
|
||
let fmt_layer = tracing_subscriber::fmt::layer()
|
||
.compact()
|
||
.with_ansi(false)
|
||
.with_writer(file);
|
||
|
||
let env_filter = EnvFilter::builder()
|
||
.with_default_directive(LevelFilter::WARN.into())
|
||
.with_env_var("QEMURDP_LOG_LEVEL")
|
||
.from_env_lossy();
|
||
|
||
tracing_subscriber::registry()
|
||
.with(fmt_layer)
|
||
.with(env_filter)
|
||
.try_init()
|
||
.context("failed to set tracing global subscriber")?;
|
||
|
||
Ok(())
|
||
}
|