summaryrefslogtreecommitdiff
path: root/crates/client/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/client/src/main.rs')
-rw-r--r--crates/client/src/main.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/crates/client/src/main.rs b/crates/client/src/main.rs
new file mode 100644
index 0000000..af8e753
--- /dev/null
+++ b/crates/client/src/main.rs
@@ -0,0 +1,42 @@
+mod common;
+
+#[cfg(not(target_arch = "wasm32"))]
+use clap::{command, Command};
+
+#[cfg(target_arch = "wasm32")]
+pub fn main() {} // dummy main, real wasm32 main is lib::main_js
+
+#[cfg(not(target_arch = "wasm32"))]
+#[tokio::main]
+pub async fn main() {
+ let matches = command!()
+ .propagate_version(true)
+ .subcommand_required(true)
+ .arg_required_else_help(true)
+ .subcommand(
+ Command::new("overlay")
+ .about("Run the LCOLONQ model renderer in a full-screen transparent overlay")
+ )
+ .subcommand(
+ Command::new("terminal")
+ .about("Run the LCOLONQ model renderer in a terminal")
+ )
+ .subcommand(
+ Command::new("server")
+ .about("Run the LCOLONQ online websocket server")
+ )
+ .get_matches();
+ match matches.subcommand() {
+ Some(("overlay", _cm)) => {
+ teleia::run("LCOLONQ", 1920, 1080, teleia::Options::OVERLAY, common::overlay::Overlay::overlay).await;
+ },
+ Some(("terminal", _cm)) => {
+ teleia::run("LCOLONQ", 1920, 1080, teleia::Options::HIDDEN, common::overlay::Overlay::terminal).await;
+ },
+ Some(("server", _cm)) => {
+ env_logger::Builder::new().filter(None, log::LevelFilter::Info).init();
+ log::info!("starting LCOLONQ server...");
+ },
+ _ => unreachable!("no subcommand"),
+ }
+}