infinity-msfs 0.3.5

Build/packaging/util CLI for infinity-msfs projects.
mod build;
mod build_js;
mod cli;
mod config;
mod create;
mod doctor;
mod package;
mod process;
mod runner;
mod sdk_install;
mod ui;
mod util;
mod watch;

use anyhow::Result;
use clap::Parser;
use cli::{Cli, Commands, SdkCommand};


fn main() {
    if let Err(err) = real_main() {
        ui::print_error(&err);
        std::process::exit(1);
    }
}

fn real_main() -> Result<()> {
    let cli = Cli::parse();

    match cli.command {
        Commands::Build(args) => build::run_build(args)?,
        Commands::Projects(args) => build::run_projects(args)?,
        Commands::Sdk(args) => match args.command {
            SdkCommand::Install(a) => sdk_install::run_install(a)?,
            SdkCommand::Path => sdk_install::run_path()?,
            SdkCommand::Remove => sdk_install::run_remove()?,
        },
        Commands::Doctor => doctor::run_doctor()?,
        Commands::Package(args) => package::run_package(args)?,
        Commands::Watch(args) => watch::run_watch(args)?,
        Commands::Create(args) => create::run_create(args)?,
    }

    Ok(())
}