use clap::{Parser, Subcommand, ValueEnum};
pub mod daemon;
pub mod docker;
pub mod exec;
pub mod images;
pub mod logs;
pub mod machine;
pub mod ps;
pub mod pull;
pub mod rm;
pub mod run;
pub mod start;
pub mod stop;
pub mod version;
#[derive(Parser)]
#[command(name = "arcbox")]
#[command(author, version, about, long_about = None)]
#[command(propagate_version = true)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
#[arg(long, global = true, default_value = "table")]
pub format: OutputFormat,
#[arg(long, global = true)]
pub debug: bool,
}
#[derive(Debug, Clone, Copy, Default, ValueEnum)]
pub enum OutputFormat {
#[default]
Table,
Json,
Quiet,
}
#[derive(Subcommand)]
pub enum Commands {
Run(run::RunArgs),
Start(start::StartArgs),
Stop(stop::StopArgs),
Ps(ps::PsArgs),
Rm(rm::RmArgs),
Logs(logs::LogsArgs),
Exec(exec::ExecArgs),
Images(images::ImagesArgs),
Pull(pull::PullArgs),
Rmi(images::RmiArgs),
#[command(subcommand)]
Machine(machine::MachineCommands),
#[command(subcommand)]
Docker(docker::DockerCommands),
Daemon(daemon::DaemonArgs),
Info,
Version,
}