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