use amareleo_chain_cli::{commands::CLI, helpers::Updater};
use clap::Parser;
use std::{env, process::exit};
#[cfg(all(target_os = "linux", target_arch = "x86_64"))]
use tikv_jemallocator::Jemalloc;
#[cfg(all(target_os = "linux", target_arch = "x86_64"))]
#[global_allocator]
static GLOBAL: Jemalloc = Jemalloc;
include!(concat!(env!("OUT_DIR"), "/built.rs"));
pub fn main_core(repo_name: &str, bin_name: &str) -> anyhow::Result<()> {
check_for_version(bin_name);
let cli = CLI::parse();
println!("{}", Updater::print_cli(repo_name, bin_name));
match cli.command.parse(repo_name, bin_name) {
Ok(output) => println!("{output}\n"),
Err(error) => {
println!("⚠️ {error}\n");
exit(1);
}
}
Ok(())
}
fn check_for_version(bin_name: &str) {
if let Some(first_arg) = env::args().nth(1) {
if ["--version", "-V"].contains(&&*first_arg) {
let version = PKG_VERSION;
let branch = GIT_HEAD_REF.unwrap_or("unknown_branch");
let commit = GIT_COMMIT_HASH.unwrap_or("unknown_commit");
let mut features = FEATURES_LOWERCASE_STR.to_owned();
features.retain(|c| c != ' ');
println!("{bin_name} {version} {branch} {commit} features=[{features}]");
exit(0);
}
}
}