From 298366a0aa76f5dc645ae38d7c04364e224ed7f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Cluseau?= Date: Wed, 3 Dec 2025 12:54:45 +0100 Subject: [PATCH] Config: query files --- src/dls.rs | 3 +++ src/lib.rs | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/dls.rs b/src/dls.rs index 91c0c62..18f385c 100644 --- a/src/dls.rs +++ b/src/dls.rs @@ -189,10 +189,13 @@ pub struct HostConfig { pub kernel: String, pub versions: Map, + /// initrd config template pub bootstrap_config: String, + /// files to add to the final initrd config, with rendering #[serde(default, skip_serializing_if = "Vec::is_empty")] pub initrd_files: Vec, + /// system config template pub config: String, } diff --git a/src/lib.rs b/src/lib.rs index c634283..f5126bf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -52,7 +52,7 @@ pub struct User { pub gid: Option, } -#[derive(Debug, serde::Deserialize, serde::Serialize)] +#[derive(Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)] pub struct File { pub path: String, #[serde(skip_serializing_if = "Option::is_none")] @@ -61,10 +61,21 @@ pub struct File { pub kind: FileKind, } -#[derive(Debug, serde::Deserialize, serde::Serialize)] +#[derive(Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)] #[serde(rename_all = "snake_case")] pub enum FileKind { Content(String), Symlink(String), Dir(bool), } + +// ------------------------------------------------------------------------ + +impl Config { + pub fn has_file(&self, path: &str) -> bool { + self.files.iter().any(|f| f.path == path) + } + pub fn file(&self, path: &str) -> Option<&File> { + self.files.iter().find(|f| f.path == path) + } +}