1use crate::{CommandGroup, Runnable};
2use clap::Parser;
3
4mod assign;
5mod clear_stale;
6mod create;
7mod destroy;
8mod limit;
9mod remove;
10mod show;
11
12pub use self::{
13 assign::*, clear_stale::*, create::*, destroy::*, limit::*, remove::*,
14 show::*,
15};
16
17#[derive(Parser, Debug)]
36#[allow(clippy::doc_markdown)]
37#[clap(arg_required_else_help = true)]
38pub struct QgroupCommand {
39 #[clap(subcommand)]
40 pub subcommand: QgroupSubcommand,
41}
42
43impl CommandGroup for QgroupCommand {
44 fn leaf(&self) -> &dyn Runnable {
45 match &self.subcommand {
46 QgroupSubcommand::Assign(cmd) => cmd,
47 QgroupSubcommand::Remove(cmd) => cmd,
48 QgroupSubcommand::Create(cmd) => cmd,
49 QgroupSubcommand::Destroy(cmd) => cmd,
50 QgroupSubcommand::Show(cmd) => cmd,
51 QgroupSubcommand::Limit(cmd) => cmd,
52 QgroupSubcommand::ClearStale(cmd) => cmd,
53 }
54 }
55}
56
57#[derive(Parser, Debug)]
58pub enum QgroupSubcommand {
59 Assign(QgroupAssignCommand),
60 Remove(QgroupRemoveCommand),
61 Create(QgroupCreateCommand),
62 Destroy(QgroupDestroyCommand),
63 Show(QgroupShowCommand),
64 Limit(QgroupLimitCommand),
65 #[command(name = "clear-stale")]
66 ClearStale(QgroupClearStaleCommand),
67}