From 188c76572d8606cefd394945bbce789d55797ec6 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 14 Oct 2024 22:48:17 +0200 Subject: merge book locales --- locale/tools/src/main.rs | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) (limited to 'locale/tools') diff --git a/locale/tools/src/main.rs b/locale/tools/src/main.rs index 9b39705b..0173138c 100644 --- a/locale/tools/src/main.rs +++ b/locale/tools/src/main.rs @@ -21,10 +21,8 @@ enum Args { output: PathBuf, }, ExportJson { - #[arg(long)] - fallback: Option, - input: PathBuf, output: PathBuf, + inputs: Vec, }, ExportGodotCsv { input_dir: PathBuf, @@ -33,10 +31,8 @@ enum Args { ExportPo { #[arg(long)] remap_ids: Option, - #[arg(long)] - fallback: Option, - input: PathBuf, output: PathBuf, + inputs: Vec, }, } @@ -62,22 +58,15 @@ static NATIVE_LANGUAGE_NAMES: &[(&str, &str)] = &[ ("ru", "русский"), ]; -fn export_load(input: &Path, fallback: Option) -> Result> { - let mut ini = load_ini(&input)?; - if let Some(fallback) = fallback { - let mut missing = 0; - let f = load_ini(&fallback)?; +fn export_load(inputs: &[PathBuf]) -> Result> { + let mut ini = BTreeMap::new(); + for path in inputs { + let f = load_ini(&path)?; for (k, v) in f { - #[allow(clippy::map_entry)] if !ini.contains_key(&k) { - if option_env!("SHOW_MISSING").is_some() { - eprintln!("fallback: key {k:?} is missing"); - } - missing += 1; ini.insert(k, v); } } - eprintln!("-- {missing} missing keys were substituted from fallback language") } for &(code, name) in NATIVE_LANGUAGE_NAMES { ini.insert(format!("c.settings.ui.language.{code}"), name.to_owned()); @@ -88,22 +77,17 @@ fn export_load(input: &Path, fallback: Option) -> Result Result<()> { let args = Args::parse(); match args { - Args::ExportJson { - fallback, - input, - output, - } => { - let ini = export_load(&input, fallback)?; + Args::ExportJson { inputs, output } => { + let ini = export_load(&inputs)?; File::create(output)?.write_all(serde_json::to_string(&ini)?.as_bytes())?; Ok(()) } Args::ExportPo { remap_ids: id_map, - input, output, - fallback, + inputs, } => { - let ini = export_load(&input, fallback)?; + let ini = export_load(&inputs)?; let id_map = id_map.map(|path| load_ini(&path)).transpose()?; File::create(output)?.write_all( format!( @@ -116,7 +100,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" {}"#, - input.file_stem().unwrap().to_string_lossy(), + inputs + .first() + .expect("at least one input required") + .file_stem() + .unwrap() + .to_string_lossy(), ini.into_iter() .fold(String::new(), |mut a, (mut key, value)| { if let Some(id_map) = &id_map { -- cgit v1.2.3-70-g09d2