Files
protostar/single/src/main.rs
2024-04-13 18:11:23 -04:00

45 lines
1.1 KiB
Rust

mod single;
use clap::Parser;
use color_eyre::{eyre::Result, Report};
use manifest_dir_macros::directory_relative_path;
use protostar::xdg::parse_desktop_file;
use stardust_xr_fusion::client::Client;
use std::path::PathBuf;
use tracing_subscriber::EnvFilter;
use crate::single::Single;
#[derive(Debug, Parser)]
#[clap(author, version, about, long_about = None)]
struct Args {
// #[clap(short, long)]
desktop_file: PathBuf,
}
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<()> {
tracing_subscriber::fmt()
.compact()
.with_env_filter(EnvFilter::from_env("LOG_LEVEL"))
.init();
color_eyre::install()?;
let args = Args::parse();
let (client, event_loop) = Client::connect_with_async_loop().await?;
client.set_base_prefixes(&[directory_relative_path!("../res")]);
let protostar = Single::create_from_desktop_file(
client.get_root(),
[0.0, 0.0, 0.0],
parse_desktop_file(args.desktop_file).map_err(Report::msg)?,
)?;
let _root = client.wrap_root(protostar)?;
tokio::select! {
_ = tokio::signal::ctrl_c() => (),
e = event_loop => e??,
};
Ok(())
}