Skip to main content

topcoat_cli/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2
3mod asset;
4mod common;
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    /// Start a development server
21    Dev(dev::DevCommand),
22    /// Format topcoat `view!` macros
23    Fmt(fmt::FmtCommand),
24    /// Inspect assets embedded in the binary
25    Asset(asset::AssetCommand),
26    /// Manage premade UI components in your project
27    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}