baizekit_cli/cmd/
mod.rs

1use clap::Parser;
2use crate::cmd::db::{DbCommand};
3
4mod generate;
5mod init;
6mod new;
7mod db;
8
9mod style {
10    use anstyle::*;
11    use clap::builder::Styles;
12
13    const HEADER: Style = AnsiColor::Green.on_default().effects(Effects::BOLD);
14    const USAGE: Style = AnsiColor::Green.on_default().effects(Effects::BOLD);
15    const LITERAL: Style = AnsiColor::Cyan.on_default().effects(Effects::BOLD);
16    const PLACEHOLDER: Style = AnsiColor::Cyan.on_default();
17    const ERROR: Style = AnsiColor::Red.on_default().effects(Effects::BOLD);
18    const VALID: Style = AnsiColor::Cyan.on_default().effects(Effects::BOLD);
19    const INVALID: Style = AnsiColor::Yellow.on_default().effects(Effects::BOLD);
20
21    pub const STYLES: Styles = {
22        Styles::styled()
23            .header(HEADER)
24            .usage(USAGE)
25            .literal(LITERAL)
26            .placeholder(PLACEHOLDER)
27            .error(ERROR)
28            .valid(VALID)
29            .invalid(INVALID)
30            .error(ERROR)
31    };
32}
33
34#[derive(Debug, Parser)]
35#[command(author, version, about, styles(style::STYLES))]
36pub enum Commands {
37    /// 新建一个App项目
38    New(new::NewAppCommand),
39    /// 初始化模板配置
40    Init(init::InitCommand),
41    /// 生成代码. [alias: gen]
42    #[command(alias = "gen")]
43    Generate(generate::Generate),
44    /// db
45    Db(DbCommand)
46}
47
48impl Commands {
49    pub fn run(self) -> anyhow::Result<()> {
50        match self {
51            Commands::New(cmd) => cmd.run(),
52            Commands::Init(cmd) => cmd.run(),
53            Commands::Generate(cmd) => cmd.run(),
54            Commands::Db(cmd) => { cmd.run()}
55        }
56    }
57}