1mod control;
16mod repair;
17mod snapshot;
18mod utils;
19
20use clap::Subcommand;
21use common_error::ext::BoxedError;
22
23use crate::Tool;
24use crate::metadata::control::{DelCommand, GetCommand, PutCommand};
25use crate::metadata::repair::RepairCommand;
26use crate::metadata::snapshot::SnapshotCommand;
27
28#[derive(Subcommand)]
32pub enum MetadataCommand {
33 #[clap(subcommand)]
34 Snapshot(SnapshotCommand),
35 #[clap(subcommand)]
36 Get(GetCommand),
37 #[clap(subcommand)]
38 Del(DelCommand),
39 #[clap(subcommand)]
40 Put(PutCommand),
41 #[clap(subcommand)]
42 Repair(RepairCommand),
43}
44
45impl MetadataCommand {
46 pub async fn build(&self) -> Result<Box<dyn Tool>, BoxedError> {
47 match self {
48 MetadataCommand::Snapshot(cmd) => cmd.build().await,
49 MetadataCommand::Repair(cmd) => cmd.build().await,
50 MetadataCommand::Get(cmd) => cmd.build().await,
51 MetadataCommand::Del(cmd) => cmd.build().await,
52 MetadataCommand::Put(cmd) => cmd.build().await,
53 }
54 }
55}