1use crate::Result;
2use clap::Parser;
3
4mod activate;
5mod cd;
6mod clean;
7mod completion;
8mod config;
9mod disable;
10mod enable;
11mod list;
12mod logs;
13mod run;
14mod start;
15mod status;
16mod stop;
17mod supervisor;
18mod usage;
19mod wait;
20
21#[derive(Debug, clap::Parser)]
22#[clap(name = "pitchfork", version = env!("CARGO_PKG_VERSION"), about = env!("CARGO_PKG_DESCRIPTION"))]
23struct Cli {
24 #[clap(subcommand)]
25 command: Commands,
26}
27
28#[derive(Debug, clap::Subcommand)]
29enum Commands {
30 Activate(activate::Activate),
31 Cd(cd::Cd),
32 Clean(clean::Clean),
33 Config(config::Config),
34 Completion(completion::Completion),
35 Disable(disable::Disable),
36 Enable(enable::Enable),
37 List(list::List),
38 Logs(logs::Logs),
39 Run(run::Run),
40 Start(start::Start),
41 Status(status::Status),
42 Stop(stop::Stop),
43 Supervisor(supervisor::Supervisor),
44 Usage(usage::Usage),
45 Wait(wait::Wait),
46}
47
48pub async fn run() -> Result<()> {
49 let args = Cli::parse();
50 match args.command {
51 Commands::Activate(activate) => activate.run().await,
52 Commands::Cd(cd) => cd.run().await,
53 Commands::Clean(clean) => clean.run().await,
54 Commands::Config(config) => config.run().await,
55 Commands::Completion(completion) => completion.run().await,
56 Commands::Disable(disable) => disable.run().await,
57 Commands::Enable(enable) => enable.run().await,
58 Commands::List(list) => list.run().await,
59 Commands::Logs(logs) => logs.run().await,
60 Commands::Run(run) => run.run().await,
61 Commands::Start(start) => start.run().await,
62 Commands::Status(status) => status.run().await,
63 Commands::Stop(stop) => stop.run().await,
64 Commands::Supervisor(supervisor) => supervisor.run().await,
65 Commands::Usage(usage) => usage.run().await,
66 Commands::Wait(wait) => wait.run().await,
67 }
68}