rustfs_cli/commands/
mod.rs1use clap::{Parser, Subcommand};
8
9use crate::exit_code::ExitCode;
10use crate::output::OutputConfig;
11
12mod admin;
13mod alias;
14mod cat;
15mod completions;
16pub mod cp;
17pub mod diff;
18mod find;
19mod head;
20mod ls;
21mod mb;
22mod mirror;
23mod mv;
24mod pipe;
25mod rb;
26mod rm;
27mod share;
28mod stat;
29mod tag;
30mod tree;
31mod version;
32
33#[derive(Parser, Debug)]
38#[command(name = "rc")]
39#[command(author, version, about, long_about = None)]
40#[command(propagate_version = true)]
41pub struct Cli {
42 #[arg(long, global = true, default_value = "false")]
44 pub json: bool,
45
46 #[arg(long, global = true, default_value = "false")]
48 pub no_color: bool,
49
50 #[arg(long, global = true, default_value = "false")]
52 pub no_progress: bool,
53
54 #[arg(short, long, global = true, default_value = "false")]
56 pub quiet: bool,
57
58 #[arg(long, global = true, default_value = "false")]
60 pub debug: bool,
61
62 #[command(subcommand)]
63 pub command: Commands,
64}
65
66#[derive(Subcommand, Debug)]
67pub enum Commands {
68 #[command(subcommand)]
70 Alias(alias::AliasCommands),
71
72 #[command(subcommand)]
74 Admin(admin::AdminCommands),
75
76 Ls(ls::LsArgs),
79
80 Mb(mb::MbArgs),
82
83 Rb(rb::RbArgs),
85
86 Cat(cat::CatArgs),
88
89 Head(head::HeadArgs),
91
92 Stat(stat::StatArgs),
94
95 Cp(cp::CpArgs),
98
99 Mv(mv::MvArgs),
101
102 Rm(rm::RmArgs),
104
105 Pipe(pipe::PipeArgs),
107
108 Find(find::FindArgs),
111
112 Diff(diff::DiffArgs),
114
115 Mirror(mirror::MirrorArgs),
117
118 Tree(tree::TreeArgs),
120
121 Share(share::ShareArgs),
123
124 #[command(subcommand)]
127 Version(version::VersionCommands),
128
129 #[command(subcommand)]
131 Tag(tag::TagCommands),
132
133 Completions(completions::CompletionsArgs),
136 }
143
144pub async fn execute(cli: Cli) -> ExitCode {
146 let output_config = OutputConfig {
147 json: cli.json,
148 no_color: cli.no_color,
149 no_progress: cli.no_progress,
150 quiet: cli.quiet,
151 };
152
153 match cli.command {
154 Commands::Alias(cmd) => alias::execute(cmd, output_config).await,
155 Commands::Admin(cmd) => admin::execute(cmd, output_config).await,
156 Commands::Ls(args) => ls::execute(args, output_config).await,
157 Commands::Mb(args) => mb::execute(args, output_config).await,
158 Commands::Rb(args) => rb::execute(args, output_config).await,
159 Commands::Cat(args) => cat::execute(args, output_config).await,
160 Commands::Head(args) => head::execute(args, output_config).await,
161 Commands::Stat(args) => stat::execute(args, output_config).await,
162 Commands::Cp(args) => cp::execute(args, output_config).await,
163 Commands::Mv(args) => mv::execute(args, output_config).await,
164 Commands::Rm(args) => rm::execute(args, output_config).await,
165 Commands::Pipe(args) => pipe::execute(args, output_config).await,
166 Commands::Find(args) => find::execute(args, output_config).await,
167 Commands::Diff(args) => diff::execute(args, output_config).await,
168 Commands::Mirror(args) => mirror::execute(args, output_config).await,
169 Commands::Tree(args) => tree::execute(args, output_config).await,
170 Commands::Share(args) => share::execute(args, output_config).await,
171 Commands::Version(cmd) => {
172 version::execute(version::VersionArgs { command: cmd }, output_config).await
173 }
174 Commands::Tag(cmd) => tag::execute(tag::TagArgs { command: cmd }, output_config).await,
175 Commands::Completions(args) => completions::execute(args),
176 }
177}