Compare commits

..

3 commits

View file

@ -12,6 +12,7 @@ use {
path::Path, path::Path,
process::{exit, Command}, process::{exit, Command},
}, },
toml::Value,
}; };
fn main() -> Result<(), Error> { fn main() -> Result<(), Error> {
@ -124,6 +125,10 @@ fn assemble() -> Result<(), Error> {
Ok(()) Ok(())
} }
fn get_path_without_boot_prefix(val: &Value) -> Option<&str> {
val.as_str()?.split("boot:///").last()
}
fn get_fs() -> Result<FileSystem<impl ReadWriteSeek>, io::Error> { fn get_fs() -> Result<FileSystem<impl ReadWriteSeek>, io::Error> {
let filename = "sysdata/system_config.toml"; let filename = "sysdata/system_config.toml";
@ -139,10 +144,6 @@ fn get_fs() -> Result<FileSystem<impl ReadWriteSeek>, io::Error> {
let fs = FileSystem::new(img, FsOptions::new())?; let fs = FileSystem::new(img, FsOptions::new())?;
// TODO: Do not hard code these here
let p = Package::load_from_file("sysdata/programs/tests/meta.toml".to_owned());
p.build();
// Read the contents of the file using a `match` block // Read the contents of the file using a `match` block
// to return the `data: Ok(c)` as a `String` // to return the `data: Ok(c)` as a `String`
// or handle any `errors: Err(_)`. // or handle any `errors: Err(_)`.
@ -196,12 +197,7 @@ TERM_BACKDROP={}
); );
// Copy the term_wallpaper to the image // Copy the term_wallpaper to the image
let term_wallpaper_path = term_wallpaper let term_wallpaper_path = get_path_without_boot_prefix(term_wallpaper).unwrap();
.as_str()
.unwrap()
.split("boot:///")
.last()
.unwrap();
copy_file_to_img(&format!("sysdata/{}", term_wallpaper_path), &fs); copy_file_to_img(&format!("sysdata/{}", term_wallpaper_path), &fs);
limine_str.push_str(&base); limine_str.push_str(&base);
@ -244,7 +240,22 @@ TERM_BACKDROP={}
let modules = value.get_mut("modules").unwrap().as_table_mut().unwrap(); let modules = value.get_mut("modules").unwrap().as_table_mut().unwrap();
// let mut real_modules = modules.clone(); // let mut real_modules = modules.clone();
for (key, value) in modules.into_iter() { modules.into_iter().for_each(|(key, value)| {
if value.is_table() && key == "tests" {
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(),
);
p.build();
}
});
modules.into_iter().for_each(|(_key, value)| {
if value.is_table() { if value.is_table() {
let path = value.get("path").expect("You must have `path` as a value"); let path = value.get("path").expect("You must have `path` as a value");
let default_value = Value::String("".into()); let default_value = Value::String("".into());
@ -258,18 +269,16 @@ TERM_BACKDROP={}
); );
limine_str.push_str(&a); limine_str.push_str(&a);
} }
} });
// Copy modules into the test_programs directory // Copy modules into the test_programs directory
modules.into_iter().for_each(|(key, value)| { modules.into_iter().for_each(|(_key, value)| {
if value.is_table() { if value.is_table() {
let path = value let path = get_path_without_boot_prefix(
value
.get("path") .get("path")
.expect("You must have a `path` as a value") .expect("You must have a `path` as a value"),
.as_str() )
.unwrap()
.split("boot:///")
.last()
.unwrap(); .unwrap();
let fpath = format!("target/test-programs/{}", path); let fpath = format!("target/test-programs/{}", path);
copy_file_to_img(&fpath, &fs); copy_file_to_img(&fpath, &fs);