use clap::Parser;
use colored::Colorize;
mod cli;
use cli::{Cli, Commands};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let cli = Cli::parse();
let log_level = if cli.verbose {
log::LevelFilter::Debug
} else if let Some(level) = cli.log_level {
level.to_level_filter()
} else {
log::LevelFilter::Warn
};
env_logger::Builder::from_default_env()
.filter_level(log_level)
.init();
match cli.command {
Commands::Version => {
println!("{} {}", "GraphLite".bold().green(), graphlite::VERSION);
println!("ISO GQL Graph Database");
Ok(())
}
Commands::Install {
path,
admin_user,
admin_password,
force,
yes,
} => cli::handle_install(path, admin_user, admin_password, force, yes),
Commands::Gql { path, sample } => cli::handle_gql(path, cli.user, cli.password, sample),
Commands::Query {
query,
path,
format,
explain,
ast,
} => cli::handle_query(path, query, cli.user, cli.password, format, explain, ast),
Commands::Session { action: _, path: _ } => {
println!("{}", "Session management not yet implemented".yellow());
Ok(())
}
}
}