1#[derive(clap::Subcommand)]
2pub enum Commands {
3 #[clap(about = "uri-tools")]
4 Uri {
5 #[clap(subcommand)]
6 command: uri::UriCommand,
7 },
8 #[clap(about = "json-tools")]
9 Json {
10 #[clap(subcommand)]
11 command: json::JsonCommand,
12 },
13 #[clap(about = "time-tools")]
14 Time {
15 #[clap(subcommand)]
16 command: time::TimeCommand,
17 },
18}
19
20pub trait Command {
21 fn run(&self) -> crate::Result<()>;
22}
23
24impl Command for Commands {
25 fn run(&self) -> crate::Result<()> {
26 match self {
27 Commands::Uri { command } => command.run(),
28 Commands::Json { command } => command.run(),
29 Commands::Time { command } => command.run(),
30 }
31 }
32}
33pub mod uri;
34pub mod json;
35pub mod time;
36mod http_parser;
37
38