Skip to main content

topcoat_cli/
lib.rs

1mod asset;
2mod cargo;
3mod dev;
4mod fmt;
5mod ui;
6
7use clap::{Parser, Subcommand};
8
9#[derive(Parser)]
10#[command(name = "topcoat")]
11pub struct TopcoatCli {
12    #[command(subcommand)]
13    command: Command,
14}
15
16#[derive(Subcommand)]
17enum Command {
18    /// Start a development server
19    Dev(dev::DevCommand),
20    /// Format topcoat `view!` macros
21    Fmt(fmt::FmtCommand),
22    /// Inspect assets embedded in the binary
23    Asset(asset::AssetCommand),
24    /// Manage premade UI components in your project
25    Ui(ui::UiCommand),
26}
27
28pub async fn run() {
29    let cli = TopcoatCli::parse();
30    match cli.command {
31        Command::Ui(cmd) => cmd.run(),
32        Command::Fmt(cmd) => cmd.run().await,
33        Command::Dev(cmd) => cmd.run().await,
34        Command::Asset(cmd) => cmd.run().await,
35    }
36}