seaplane_cli/cli/cmds/
metadata.rs1mod common;
2mod delete;
3mod get;
4mod list;
5mod set;
6
7use clap::{value_parser, ArgMatches, Command};
8
9pub use self::{
10 common::SeaplaneMetadataCommonArgMatches,
11 delete::SeaplaneMetadataDelete,
12 get::SeaplaneMetadataGet,
13 list::SeaplaneMetadataList,
14 set::{SeaplaneMetadataSet, SeaplaneMetadataSetArgMatches},
15};
16use crate::{cli::CliCommand, printer::OutputFormat};
17
18#[derive(Copy, Clone, Debug)]
19pub struct SeaplaneMetadata;
20
21impl SeaplaneMetadata {
22 pub fn command() -> Command {
23 Command::new("metadata")
24 .about("Operate on metadata key-value pairs using the Global Data Coordination API")
25 .subcommand_required(true)
26 .arg_required_else_help(true)
27 .visible_aliases(["meta", "md"])
28 .arg(
29 arg!(--format =["FORMAT"=>"table"] global)
30 .help("Change the output format")
31 .value_parser(value_parser!(OutputFormat)),
32 )
33 .subcommand(SeaplaneMetadataGet::command())
34 .subcommand(SeaplaneMetadataSet::command())
35 .subcommand(SeaplaneMetadataDelete::command())
36 .subcommand(SeaplaneMetadataList::command())
37 }
38}
39
40impl CliCommand for SeaplaneMetadata {
41 fn next_subcmd<'a>(
42 &self,
43 matches: &'a ArgMatches,
44 ) -> Option<(Box<dyn CliCommand>, &'a ArgMatches)> {
45 match &matches.subcommand() {
46 Some(("get", m)) => Some((Box::new(SeaplaneMetadataGet), m)),
47 Some(("set", m)) => Some((Box::new(SeaplaneMetadataSet), m)),
48 Some(("delete", m)) => Some((Box::new(SeaplaneMetadataDelete), m)),
49 Some(("list", m)) => Some((Box::new(SeaplaneMetadataList), m)),
50 _ => None,
51 }
52 }
53}