use clap::Parser;
use clap::Subcommand;
use corenn::cmd::eval::EvalArgs;
use corenn::cmd::export_vectors::ExportVectorsArgs;
use corenn::cmd::migrate_hnsw::MigrateHnswArgs;
use corenn::cmd::serve::ServeArgs;
use tikv_jemallocator::Jemalloc;
extern crate blas_src;
#[global_allocator]
static ALLOC: Jemalloc = Jemalloc;
#[derive(Subcommand)]
enum Commands {
Eval(EvalArgs),
ExportVectors(ExportVectorsArgs),
MigrateHnsw(MigrateHnswArgs),
Serve(ServeArgs),
}
#[derive(Parser)]
struct Cli {
#[command(subcommand)]
command: Commands,
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt::init();
let cli = Cli::parse();
match cli.command {
Commands::Eval(args) => args.exec().await,
Commands::ExportVectors(args) => args.exec().await,
Commands::MigrateHnsw(args) => args.exec().await,
Commands::Serve(args) => args.exec().await,
};
}