use std::net::IpAddr;
use clap::Args;
use clap::Parser;
use clap::Subcommand;
#[derive(Parser)]
#[command(author, about, version, arg_required_else_help = true)]
pub struct Arguments {
#[command(subcommand)]
pub command: Option<Commands>,
#[arg(short, long, global = true)]
pub verbose: bool,
}
#[derive(Subcommand)]
pub enum Commands {
Login(ClientArgs),
Logout(ClientArgs),
Status(StatusArgs),
ConfigPaths,
KeepAlive(DaemonArgs),
}
#[derive(Args)]
pub struct StatusArgs {
#[arg(short, long)]
pub json: bool,
}
#[derive(Args)]
pub struct ClientArgs {
#[arg(short, long)]
pub username: Option<String>,
#[arg(short, long)]
pub password: Option<String>,
#[arg(long)]
pub ip: Option<IpAddr>,
#[arg(long)]
pub dm: bool,
#[arg(short, long)]
pub config: Option<String>,
#[arg(short, long)]
pub force: bool,
}
#[derive(Args)]
pub struct DaemonArgs {
#[arg(short, long)]
pub config: Option<String>,
}