diff --git a/crates/boot/src/entries.rs b/crates/boot/src/entries.rs index 8d1a3e2..352ef6d 100644 --- a/crates/boot/src/entries.rs +++ b/crates/boot/src/entries.rs @@ -93,7 +93,17 @@ impl BootableEntry { } /// Determine if this entry matches `needle` by comparing to the name or title of the entry. + /// If `needle` ends with *, we will match a partial match. pub fn is_match(&self, needle: &str) -> bool { + // If the needle ends with '*', we will accept a partial match. + if needle.ends_with("*") { + // Strip off any '*' at the end. + let partial = needle.trim_end_matches("*"); + // Check if the name or title start with the partial match. + return self.name.starts_with(partial) || self.title.starts_with(partial); + } + + // Standard quality matching rules. self.name == needle || self.title == needle } diff --git a/crates/config/src/lib.rs b/crates/config/src/lib.rs index 9d32064..6b2ff5e 100644 --- a/crates/config/src/lib.rs +++ b/crates/config/src/lib.rs @@ -78,8 +78,7 @@ pub struct RootConfiguration { /// Options configuration for Sprout, used when the corresponding options are not specified. #[derive(Serialize, Deserialize, Debug, Default, Clone)] pub struct OptionsConfiguration { - /// The entry to boot without showing the boot menu. - /// If not specified, a boot menu is shown. + /// The entry to mark as the default entry, instead of the first entry. #[serde(rename = "default-entry", default)] pub default_entry: Option, /// The timeout of the boot menu.