use clap::Subcommand;
use super::{OutputFormat, Shell};
#[derive(Subcommand)]
pub enum Command {
#[command(hide = true)]
InternalStdinWatchdog {
parent_pid: u32,
},
#[command(display_order = 31)]
Build {
name: Option<String>,
#[arg(long)]
rebuild: bool,
#[arg(long)]
no_diff: bool,
#[arg(long)]
edit: bool,
},
#[command(display_order = 32)]
Enable {
name: Option<String>,
#[arg(long)]
yes: bool,
},
#[command(display_order = 33)]
Disable {
name: Option<String>,
#[arg(long)]
force: bool,
},
#[command(display_order = 23)]
Start {
name: Option<String>,
#[arg(long, default_value = "30")]
timeout: u64,
#[arg(long)]
edit: bool,
},
#[command(display_order = 24)]
Stop {
name: Option<String>,
},
#[command(display_order = 21)]
Exec {
#[arg(long)]
root: bool,
#[arg(required = true, trailing_var_arg = true)]
args: Vec<String>,
},
#[command(display_order = 22)]
Run {
app: String,
#[arg(trailing_var_arg = true)]
app_args: Vec<String>,
},
#[command(display_order = 26)]
Status {
name: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
#[command(display_order = 40)]
Logs {
name: Option<String>,
#[arg(short, long)]
follow: bool,
#[arg(short, long)]
tail: Option<u32>,
#[arg(long)]
since: Option<String>,
},
#[command(display_order = 53)]
Export {
#[command(subcommand)]
export_cmd: ExportCommand,
},
#[command(display_order = 42)]
Stats {
name: Option<String>,
#[arg(long)]
no_stream: bool,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
#[command(visible_alias = "rm", display_order = 60)]
Remove {
name: Option<String>,
#[arg(long)]
all: bool,
#[arg(long)]
force: bool,
#[arg(long)]
stale: bool,
#[arg(long)]
config: bool,
},
#[command(display_order = 41)]
Inspect {
name: Option<String>,
#[arg(long)]
config: bool,
#[arg(long)]
quadlet: bool,
#[arg(long)]
env: bool,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
#[command(hide = true)]
Serve {
name: String,
},
#[command(hide = true)]
Compositor {
name: String,
},
#[command(visible_alias = "shell", display_order = 20)]
Enter {
name: Option<String>,
#[arg(long)]
edit: bool,
},
#[command(display_order = 10)]
Create {
image: String,
#[arg(long, short)]
name: Option<String>,
#[arg(long, short)]
packages: Option<String>,
#[arg(long)]
no_start: bool,
#[arg(long)]
edit: bool,
},
#[command(display_order = 30)]
Edit {
name: Option<String>,
#[arg(long)]
rebuild: bool,
},
#[command(visible_alias = "ls", display_order = 25)]
List {
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
#[command(display_order = 50)]
Clone {
src: String,
dst: String,
#[arg(long)]
copy_home: bool,
},
#[command(display_order = 11)]
Init {
image: Option<String>,
#[arg(long)]
name: Option<String>,
#[arg(long, short = 'i', conflicts_with = "profile")]
interactive: bool,
#[arg(long)]
profile: Option<String>,
},
#[command(display_order = 34)]
Update {
name: Option<String>,
#[arg(long)]
no_restart: bool,
},
#[command(display_order = 35)]
Pull {
image: Option<String>,
},
#[command(display_order = 12)]
Profile {
#[command(subcommand)]
profile_cmd: ProfileCommand,
},
#[command(display_order = 43)]
Doctor {
name: Option<String>,
#[arg(long)]
fix: bool,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
#[command(display_order = 80)]
Completions {
shell: Shell,
#[arg(long, action = clap::ArgAction::SetTrue)]
abbrs: bool,
},
#[command(display_order = 36)]
Diff {
name: Option<String>,
#[arg(long)]
apply: bool,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
#[command(display_order = 51)]
Snapshot {
#[command(subcommand)]
snapshot_cmd: SnapshotCommand,
},
#[command(display_order = 52)]
Restore {
tag: String,
name: Option<String>,
},
#[command(display_order = 70)]
Use {
name: Option<String>,
#[arg(long)]
clear: bool,
},
#[command(display_order = 44)]
FindDefinition {
name: Option<String>,
},
#[command(display_order = 45)]
Recover {
name: Option<String>,
#[arg(long)]
yes: bool,
},
#[command(display_order = 46)]
History {
name: Option<String>,
#[arg(long, default_value_t = 25)]
limit: usize,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
#[command(display_order = 81, group(
clap::ArgGroup::new("direction")
.args(["to_container", "to_host"])
.required(true)
.multiple(false)
))]
TranslatePath {
#[arg(long)]
to_container: bool,
#[arg(long)]
to_host: bool,
path: String,
},
#[command(display_order = 75)]
Migrate {
#[arg(long)]
force: bool,
},
#[command(hide = true, name = "__complete-names")]
CompleteNames,
}
#[derive(Subcommand)]
pub enum ExportCommand {
App {
name: Option<String>,
#[arg(long, conflicts_with = "name")]
all: bool,
},
Bin {
name: Option<String>,
#[arg(long, conflicts_with = "name")]
all: bool,
},
Clean,
List,
}
#[derive(Subcommand)]
pub enum ProfileCommand {
List,
Show {
name: String,
},
}
#[derive(Debug, Clone, Subcommand)]
pub enum SnapshotCommand {
Create {
name: Option<String>,
#[arg(long, short)]
tag: Option<String>,
},
List {
name: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
output: OutputFormat,
},
Prune {
name: Option<String>,
#[arg(long, default_value_t = 5)]
keep: usize,
},
}