use anyhow::Result;
use std::env;
fn main() -> Result<()> {
env_logger::init();
let args: Vec<String> = env::args().collect();
match args.as_slice() {
[_] => {
#[cfg(windows)]
burncloud_client::launch_gui();
#[cfg(not(windows))]
burncloud_cli::show_help();
}
[_, subcommand, _rest @ ..] => {
match subcommand.as_str() {
"client" => {
burncloud_client::launch_gui();
}
"server" => {
run_async_server()?;
}
"code" => {
run_async_code()?;
}
_ => {
run_async_cli(&args[1..])?;
}
}
}
[] => {
burncloud_cli::show_help();
}
}
Ok(())
}
#[tokio::main]
async fn run_async_server() -> Result<()> {
burncloud_server::start_server().await
}
#[tokio::main]
async fn run_async_code() -> Result<()> {
burncloud_code::start_cli().await
}
#[tokio::main]
async fn run_async_cli(args: &[String]) -> Result<()> {
burncloud_cli::handle_command(args).await
}