mod exec;
mod fsio;
mod param;
use crate::{
exec::execute,
param::{print_help, ParseArgFailure},
};
use rust_i18n::{available_locales, i18n, set_locale, t};
use std::env;
i18n!("locales", fallback = "en, zh");
fn main() {
setup_locale();
match param::args2param() {
Ok(param) => execute(¶m),
Err(ParseArgFailure::Help | ParseArgFailure::Version) => (),
Err(ParseArgFailure::Invalid) => {
eprintln!("{}", t!("param.parse.error"));
print_help();
}
Err(ParseArgFailure::RegexError(msg)) => {
eprintln!("{}", msg);
}
}
}
fn setup_locale() {
let env_lang = env::var("LANG").unwrap_or_else(|_| String::from("en"));
let current_locale = env_lang.split_at(2).0;
let vec = available_locales!();
if vec.contains(¤t_locale) {
set_locale(current_locale);
} else {
set_locale("en");
}
}