feat: add profile language preferences and refine toast, dropdown and history UI
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
use std::{env, fs, path::PathBuf};
|
||||
|
||||
fn main() {
|
||||
println!("cargo:rerun-if-changed=lang");
|
||||
|
||||
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR"));
|
||||
let lang_dir = manifest_dir.join("lang");
|
||||
let mut files = fs::read_dir(&lang_dir)
|
||||
.unwrap_or_else(|error| panic!("failed to read {}: {error}", lang_dir.display()))
|
||||
.filter_map(Result::ok)
|
||||
.map(|entry| entry.path())
|
||||
.filter(|path| path.extension().and_then(|value| value.to_str()) == Some("json"))
|
||||
.collect::<Vec<_>>();
|
||||
files.sort();
|
||||
|
||||
if files.is_empty() {
|
||||
panic!("lang directory must contain at least one .json language file");
|
||||
}
|
||||
|
||||
let mut generated = String::from("pub const EMBEDDED_LANGUAGE_FILES: &[(&str, &str)] = &[\n");
|
||||
for path in files {
|
||||
let name = path
|
||||
.file_name()
|
||||
.and_then(|value| value.to_str())
|
||||
.expect("language filename must be valid UTF-8");
|
||||
println!("cargo:rerun-if-changed=lang/{name}");
|
||||
generated.push_str(&format!(
|
||||
" ({name:?}, include_str!(concat!(env!(\"CARGO_MANIFEST_DIR\"), \"/lang/{name}\"))),\n"
|
||||
));
|
||||
}
|
||||
generated.push_str("];\n");
|
||||
|
||||
let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR"));
|
||||
fs::write(out_dir.join("languages.rs"), generated).expect("failed to generate embedded languages");
|
||||
}
|
||||
Reference in New Issue
Block a user