summaryrefslogtreecommitdiff
path: root/src/manifest.rs
diff options
context:
space:
mode:
authorHermes Agent <hermes@localhost>2026-08-12 02:44:26 +0000
committerHermes Agent <hermes@localhost>2026-08-12 02:44:26 +0000
commit450a5b27e101e7b40cd2d035056c4141e9477f6a (patch)
tree8c8ca9a46fa631b366317e4ba0ca5ba57c5ea066 /src/manifest.rs
parent2a3fb3adabb0aa17113032ad785458556fb6372e (diff)
Coalesce duplicate enabled service facts
Diffstat (limited to 'src/manifest.rs')
-rw-r--r--src/manifest.rs16
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>> {