From 7960fdcbff44b4cd858203562a8f613efe39eb8d Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Tue, 4 Feb 2025 22:14:54 -0600 Subject: get started on cli --- ozone-cli/src/cli.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 ozone-cli/src/cli.rs (limited to 'ozone-cli/src/cli.rs') diff --git a/ozone-cli/src/cli.rs b/ozone-cli/src/cli.rs new file mode 100644 index 0000000..d288e3c --- /dev/null +++ b/ozone-cli/src/cli.rs @@ -0,0 +1,46 @@ +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 +} -- cgit v1.2.3-70-g09d2