diff --git a/repbuild/src/main.rs b/repbuild/src/main.rs index f85bfe5..0418a1e 100644 --- a/repbuild/src/main.rs +++ b/repbuild/src/main.rs @@ -12,6 +12,7 @@ use { path::Path, process::{exit, Command}, }, + toml::Value, }; fn main() -> Result<(), Error> { @@ -124,6 +125,10 @@ fn assemble() -> Result<(), Error> { Ok(()) } +fn get_path_without_boot_prefix(val: &Value) -> Option<&str> { + val.as_str()?.split("boot:///").last() +} + fn get_fs() -> Result, io::Error> { let filename = "sysdata/system_config.toml"; @@ -192,12 +197,7 @@ TERM_BACKDROP={} ); // Copy the term_wallpaper to the image - let term_wallpaper_path = term_wallpaper - .as_str() - .unwrap() - .split("boot:///") - .last() - .unwrap(); + let term_wallpaper_path = get_path_without_boot_prefix(term_wallpaper).unwrap(); copy_file_to_img(&format!("sysdata/{}", term_wallpaper_path), &fs); limine_str.push_str(&base); @@ -242,17 +242,13 @@ TERM_BACKDROP={} modules.into_iter().for_each(|(key, value)| { if value.is_table() && key == "tests" { - let path = value - .get("path") - .expect("You must have `path` as a value") - .as_str() - .unwrap() - .split("boot:///") - .last() - .unwrap() - .split(".") - .next() - .unwrap(); + let path = get_path_without_boot_prefix( + value.get("path").expect("You must have `path` as a value"), + ) + .unwrap() + .split(".") + .next() + .unwrap(); let p = Package::load_from_file( format!("sysdata/programs/{}/meta.toml", path).to_owned(), ); @@ -278,14 +274,12 @@ TERM_BACKDROP={} // Copy modules into the test_programs directory modules.into_iter().for_each(|(_key, value)| { if value.is_table() { - let path = value - .get("path") - .expect("You must have a `path` as a value") - .as_str() - .unwrap() - .split("boot:///") - .last() - .unwrap(); + let path = get_path_without_boot_prefix( + value + .get("path") + .expect("You must have a `path` as a value"), + ) + .unwrap(); let fpath = format!("target/test-programs/{}", path); copy_file_to_img(&fpath, &fs); }