use crate::cli::Cli;
use crate::config::Config;
use crate::{die, warning};
use rust_i18n::t;
pub fn hook(args: &Cli) {
let skip_main_logic = args.gen_config || args.print_config;
let commands_present = args.command.is_some();
if skip_main_logic && commands_present {
warning!("{}", t!("warnings.subcommand_suppressed"));
}
if args.gen_config {
print_default_config();
}
if let Some(path) = args.config.clone() {
Config::override_path(path);
}
if args.print_config {
print_config();
}
if skip_main_logic {
std::process::exit(0);
}
}
fn print_config() {
let config = match Config::get() {
Ok(config) => config,
Err(why) => die!("{}", why),
};
let config = toml::to_string_pretty(&config).unwrap();
print!("{config}");
}
fn print_default_config() {
let config_str = toml::to_string_pretty(&Config::default())
.expect("default `Config` is always serialisable.");
print!("{config_str}");
}