1#![cfg_attr(docsrs, feature(doc_cfg))]
2
3mod asset;
4mod cargo;
5mod dev;
6mod fmt;
7mod ui;
8
9use clap::{Parser, Subcommand};
10
11#[derive(Parser)]
12#[command(name = "topcoat")]
13pub struct TopcoatCli {
14 #[command(subcommand)]
15 command: Command,
16}
17
18#[derive(Subcommand)]
19enum Command {
20 Dev(dev::DevCommand),
22 Fmt(fmt::FmtCommand),
24 Asset(asset::AssetCommand),
26 Ui(ui::UiCommand),
28}
29
30pub async fn run() {
31 let cli = TopcoatCli::parse();
32 match cli.command {
33 Command::Ui(cmd) => cmd.run(),
34 Command::Fmt(cmd) => cmd.run().await,
35 Command::Dev(cmd) => cmd.run().await,
36 Command::Asset(cmd) => cmd.run().await,
37 }
38}