Create dummy files for writing

This commit is contained in:
Jaby 2022-10-17 20:44:12 +02:00 committed by Jaby
parent df7c56bf9b
commit 4f6900f121
2 changed files with 26 additions and 9 deletions

View File

@ -1,22 +1,29 @@
use psxcdgen_ex::types::{layout::Layout, CDDesc, File, Directory}; use psxcdgen_ex::types::{layout::Layout, CDDesc, File, Directory};
use tool_helper::Error; use tool_helper::Error;
fn make_file(name: &str) -> Result<File, Error> {
let mut name = name.to_owned();
name.push_str(".txt");
File::new_regular(name.as_ref(), "Planschbecken sind planschig und so".to_owned().into_bytes())
}
fn populate() -> Result<CDDesc, Error> { fn populate() -> Result<CDDesc, Error> {
let mut desc = CDDesc::new(); let mut desc = CDDesc::new();
let file = File::new("Planschi.jpg")?; let file = make_file("Planschi")?;
let file2 = File::new("Wuff.png")?; let file2 = make_file("Wuff")?;
let folder = { let folder = {
let mut folder = Directory::new("Sub")?; let mut folder = Directory::new("Sub")?;
let sub_folder = { let sub_folder = {
let mut folder = Directory::new("SubSub")?; let mut folder = Directory::new("SubSub")?;
folder.add_file(File::new("Blubb.bin")?); folder.add_file(make_file("Blubb")?);
folder folder
}; };
folder.add_dir(sub_folder); folder.add_dir(sub_folder);
folder.add_file(File::new("Schwimm.jpg")?); folder.add_file(make_file("Schwimm")?);
folder.add_file(File::new("Miau.png")?); folder.add_file(make_file("Miau")?);
folder folder
}; };

View File

@ -192,19 +192,29 @@ impl std::fmt::Display for Directory {
} }
} }
enum FileType {
Regular(Vec<u8>)
}
pub struct File { pub struct File {
pub name: FileName, pub name: FileName,
pub properties: Properties, pub properties: Properties,
_content: Vec<u8> content: FileType
} }
impl File { impl File {
pub fn new(file_name: &str) -> Result<File, Error> { pub fn new_regular(file_name: &str, content: Vec<u8>) -> Result<File, Error> {
Ok(File{name: FileName::from_str(file_name)?, properties: Properties::default(), _content: Vec::new()}) Ok(File{name: FileName::from_str(file_name)?, properties: Properties::default(), content: FileType::Regular(content)})
} }
pub fn get_sector_count(&self) -> usize { pub fn get_sector_count(&self) -> usize {
self.properties.sector_count_xa_data(0) let content_size = {
match &self.content {
FileType::Regular(content) => content.len()
}
};
self.properties.sector_count_xa_data(content_size)
} }
} }