forklaunch 1.20.1

Launch faster with forklaunch
use anyhow::Result;
use clap::{ArgMatches, Command};

use crate::{CliCommand, core::command::command, sdk::mode::ModeCommand};

pub(crate) mod mode;

#[derive(Debug)]
pub(crate) struct SdkCommand {
    mode: ModeCommand,
}

impl SdkCommand {
    pub(crate) fn new() -> Self {
        Self {
            mode: ModeCommand::new(),
        }
    }
}

impl CliCommand for SdkCommand {
    fn command(&self) -> Command {
        command("sdk", "Manage SDKs")
            .subcommand_required(true)
            .subcommand(self.mode.command())
    }

    fn handler(&self, matches: &ArgMatches) -> Result<()> {
        match matches.subcommand() {
            Some(("mode", sub_matches)) => self.mode.handler(sub_matches),
            _ => unreachable!(),
        }
    }
}