un-hard-code the tests #14
|
@ -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,19 +269,17 @@ 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(
|
||||||
.get("path")
|
value
|
||||||
.expect("You must have a `path` as a value")
|
.get("path")
|
||||||
.as_str()
|
.expect("You must have a `path` as a value"),
|
||||||
.unwrap()
|
)
|
||||||
.split("boot:///")
|
.unwrap();
|
||||||
.last()
|
|
||||||
.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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue