use std::path::PathBuf; use clap::{Args, Parser, Subcommand}; #[derive(Subcommand, Debug)] pub enum ProfileCommand { Select, Create, List } #[derive(Args, Debug)] pub struct ProfileArgs { #[command(subcommand)] subcmd: Option } impl ProfileArgs { pub fn take_command(&mut self) -> ProfileCommand { self.subcmd.take().unwrap_or(ProfileCommand::List) } } #[derive(Subcommand, Debug)] pub enum RootCommand { Profile(ProfileArgs), Instance, } #[derive(Parser, Debug)] #[clap(version)] pub struct Cli { /// Run the launcher in offline mode. The launcher will not attempt to make any requests using /// the network. The launcher _will_ verify the integrity of files required to launch the game, /// and refuse to launch the game with an error if it must download a file. #[arg(long, global = true)] pub offline: bool, /// Directory which the launcher will perform its work in. Defaults to an application-specific /// directory based on your OS. #[arg(long, global = true, value_hint = clap::ValueHint::DirPath)] pub home: Option, #[command(subcommand)] pub subcmd: RootCommand }