diff options
| author | Hermes Agent <hermes@localhost> | 2026-08-12 02:44:26 +0000 |
|---|---|---|
| committer | Hermes Agent <hermes@localhost> | 2026-08-12 02:44:26 +0000 |
| commit | 450a5b27e101e7b40cd2d035056c4141e9477f6a (patch) | |
| tree | 8c8ca9a46fa631b366317e4ba0ca5ba57c5ea066 /src/manifest.rs | |
| parent | 2a3fb3adabb0aa17113032ad785458556fb6372e (diff) | |
Coalesce duplicate enabled service facts
Diffstat (limited to 'src/manifest.rs')
| -rw-r--r-- | src/manifest.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/manifest.rs b/src/manifest.rs index afbf5d6..b3e489d 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -136,7 +136,13 @@ impl ArtifactManifest { } } - Self::new(Vec::new(), files, initrd, services, archive_members) + Self::new( + Vec::new(), + files, + initrd, + coalesce_enabled_services(services), + archive_members, + ) } } @@ -176,7 +182,13 @@ fn collect_services(rootfs: &Path) -> Result<Vec<ServiceRecord>> { services.push(ServiceRecord::new(name, true)); } } - Ok(services) + Ok(coalesce_enabled_services(services)) +} + +fn coalesce_enabled_services(mut services: Vec<ServiceRecord>) -> Vec<ServiceRecord> { + services.sort_by(|left, right| left.name.cmp(&right.name)); + services.dedup_by(|left, right| left.name == right.name); + services } fn collect_archive_members(archive_path: &Path) -> Result<Vec<ArchiveMemberRecord>> { |