1mod cmd;
2
3use clap::{Parser, Subcommand};
4
5#[derive(Parser)]
6#[command(name = "van", version, about = "Van - Vue-like template engine toolchain")]
7struct Cli {
8 #[command(subcommand)]
9 command: Commands,
10}
11
12#[derive(Subcommand)]
13enum Commands {
14 Init {
16 name: Option<String>,
18 },
19 Dev,
21 Generate,
23}
24
25pub async fn run() {
26 let cli = Cli::parse();
27
28 let result = match cli.command {
29 Commands::Init { name } => cmd::init::run(name),
30 Commands::Dev => cmd::dev::run().await,
31 Commands::Generate => cmd::generate::run(),
32 };
33
34 if let Err(e) = result {
35 eprintln!("Error: {e:#}");
36 std::process::exit(1);
37 }
38}