mod commands;
mod config;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(name = "vize")]
#[command(about = "High-performance Vue.js toolchain in Rust", long_about = None)]
#[command(version, disable_version_flag = true)]
struct Cli {
#[arg(short = 'v', short_alias = 'V', long, action = clap::ArgAction::Version)]
version: (),
#[command(subcommand)]
command: Option<Commands>,
}
#[derive(Subcommand)]
enum Commands {
#[command(visible_alias = "atelier")]
Build(commands::build::BuildArgs),
#[command(visible_alias = "glyph")]
Fmt(commands::fmt::FmtArgs),
#[command(visible_alias = "patina")]
Lint(commands::lint::LintArgs),
Check(commands::check::CheckArgs),
#[cfg(unix)]
CheckServer(commands::check_server::CheckServerArgs),
Musea(commands::musea::MuseaArgs),
#[command(visible_alias = "maestro")]
Lsp(commands::lsp::LspArgs),
Ide(commands::ide::IdeArgs),
}
fn main() {
let cli = Cli::parse();
match cli.command {
Some(Commands::Build(args)) => commands::build::run(args),
Some(Commands::Fmt(args)) => commands::fmt::run(args),
Some(Commands::Lint(args)) => commands::lint::run(args),
Some(Commands::Check(args)) => commands::check::run(args),
#[cfg(unix)]
Some(Commands::CheckServer(args)) => commands::check_server::run(args),
Some(Commands::Musea(args)) => commands::musea::run(args),
Some(Commands::Lsp(args)) => commands::lsp::run(args),
Some(Commands::Ide(args)) => commands::ide::run(args),
None => {
commands::build::run(commands::build::BuildArgs::default());
}
}
}