From 87f8faba2fde2ac4cfa79dbb1f30907b6e48653c Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Mon, 16 Dec 2024 13:45:22 +1300 Subject: Update metadata and parser to match current specification The metadata specification has changed to use '/' as the separator between the program name and program version in the name string, and each author line is now no longer followed by the year in which the author last contributed to the program. --- src/devices/system_device.rs | 7 ++----- src/metadata.rs | 19 +++++-------------- 2 files changed, 7 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/devices/system_device.rs b/src/devices/system_device.rs index bcffb86..383bb08 100644 --- a/src/devices/system_device.rs +++ b/src/devices/system_device.rs @@ -14,11 +14,8 @@ impl SystemDevice { let pkg_version = env!("CARGO_PKG_VERSION"); let pkg_name = env!("CARGO_PKG_NAME"); let pkg_authors = env!("CARGO_PKG_AUTHORS"); - let name_str = format!("{pkg_name}, {pkg_version}"); - let mut authors_str = String::new(); - for author in pkg_authors.split(":") { - authors_str.push_str(&format!("{author}, 2024\n")); - } + let name_str = format!("{pkg_name}/{pkg_version}"); + let authors_str = pkg_authors.replace(":", "\n"); Self { name: ReadBuffer::from_str(&name_str), authors: ReadBuffer::from_str(&authors_str), diff --git a/src/metadata.rs b/src/metadata.rs index 7130517..7692434 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -28,12 +28,9 @@ impl<'a> MetadataParser<'a> { return None; } - let (name, version) = split_string(self.string(self.double(0x10))); + let (name, version) = split_name_version(self.string(self.double(0x10))); let authors = self.string(self.double(0x12)).map(|string| { - string.lines().map(|line| { - let (name, year) = split_string(Some(line.to_string())); - Author { name: name.unwrap(), year } - }).collect() + string.lines().map(|line| line.to_string()).collect() }); Some( ProgramMetadata { @@ -89,9 +86,9 @@ impl<'a> MetadataParser<'a> { } } -fn split_string(string: Option) -> (Option, Option) { +fn split_name_version(string: Option) -> (Option, Option) { if let Some(string) = string { - match string.split_once(", ") { + match string.split_once('/') { Some((left, right)) => (Some(left.to_string()), Some(right.to_string())), None => (Some(string), None), } @@ -120,7 +117,7 @@ pub struct ProgramMetadata { pub required_devices: u16, pub name: Option, pub version: Option, - pub authors: Option>, + pub authors: Option>, pub description: Option, pub path_buffer: Option, pub small_icon: Option<[u8; 72]>, @@ -128,9 +125,3 @@ pub struct ProgramMetadata { pub bg_colour: Option, pub fg_colour: Option, } - - -pub struct Author { - pub name: String, - pub year: Option, -} -- cgit v1.2.3-70-g09d2