#![cfg_attr(docsrs, feature(doc_cfg))]
mod asset;
mod common;
mod dev;
mod fmt;
mod ui;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(name = "topcoat")]
pub struct TopcoatCli {
#[command(subcommand)]
command: Command,
}
impl TopcoatCli {
pub async fn run(self) {
match self.command {
Command::Ui(cmd) => cmd.run(),
Command::Fmt(cmd) => cmd.run().await,
Command::Dev(cmd) => cmd.run().await,
Command::Asset(cmd) => cmd.run().await,
}
}
}
#[derive(Subcommand)]
enum Command {
Dev(dev::DevCommand),
Fmt(fmt::FmtCommand),
Asset(asset::AssetCommand),
Ui(ui::UiCommand),
}
pub async fn run() {
common::version::warn_on_mismatch();
TopcoatCli::parse().run().await;
}