mgd2-tram-championships/src/game/debug/console/cli.rs

24 lines
676 B
Rust
Raw Normal View History

use clap::{Parser, Subcommand};
use crate::game::debug::DebugEvent;
pub(super) fn respond(line: &str) -> Result<DebugEvent, String> {
let might_be_help_call = line.contains("help") || line.contains("-h");
let args = shlex::split(line).ok_or("Invalid Quoting")?;
let cli = Cli::try_parse_from(args).map_err(|e| e.to_string());
if might_be_help_call && cli.as_ref().is_err_and(|item| item.starts_with("Usage: ")) {
let Err(s) = cli else { unreachable!() };
return Ok(DebugEvent::PrintToConsole(s));
}
Ok(cli?.cmd)
}
#[derive(Debug, Parser)]
#[command(multicall = true)]
struct Cli {
#[command(subcommand)]
cmd: DebugEvent,
}