1use anyhow::Result;
2use clap::{Parser, Subcommand};
3use npm::NpmCmd;
4
5use crate::{bench::BenchCmd, clean::CleanCmd, es::EsCmd, git::GitCmd};
6
7mod bench;
8mod clean;
9mod es;
10mod git;
11mod npm;
12mod util;
13
14#[derive(Debug, Parser)]
15struct CliArgs {
16 #[clap(subcommand)]
17 cmd: Cmd,
18}
19
20#[derive(Debug, Subcommand)]
21enum Cmd {
22 Es(EsCmd),
23 Bench(BenchCmd),
24 Git(GitCmd),
25 Npm(NpmCmd),
26 Clean(CleanCmd),
27}
28
29fn main() -> Result<()> {
30 let args = CliArgs::parse();
31
32 match args.cmd {
33 Cmd::Es(c) => c.run(),
34 Cmd::Bench(c) => c.run(),
35 Cmd::Git(c) => c.run(),
36 Cmd::Npm(c) => c.run(),
37 Cmd::Clean(c) => c.run(),
38 }
39}