MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / parse_smoke_config

Function parse_smoke_config

xtask/src/extension_catalog.rs:1027–1058  ·  view source on GitHub ↗
(path: &Path)

Source from the content-addressed store, hash-verified

1025}
1026
1027fn parse_smoke_config(path: &Path) -> Result<BTreeMap<String, ExtensionSmokeEvidence>> {
1028 if !path.exists() {
1029 return Ok(BTreeMap::new());
1030 }
1031 let text = fs::read_to_string(path).with_context(|| format!("read {}", path.display()))?;
1032 let config: SmokeConfig =
1033 toml::from_str(&text).with_context(|| format!("parse {}", path.display()))?;
1034 ensure!(
1035 config.format_version == 1,
1036 "{} format_version must be 1",
1037 path.display()
1038 );
1039 let mut evidence = BTreeMap::new();
1040 for mut extension in config.extensions {
1041 ensure!(!extension.id.is_empty(), "smoke evidence has empty id");
1042 normalize_smoke_statuses(&mut extension);
1043 ensure_valid_smoke_status(&extension.direct, &extension.id, "direct")?;
1044 ensure_valid_smoke_status(&extension.server, &extension.id, "server")?;
1045 ensure_valid_smoke_status(&extension.restart, &extension.id, "restart")?;
1046 ensure_valid_smoke_status(&extension.dump_restore, &extension.id, "dump-restore")?;
1047 ensure!(
1048 evidence
1049 .insert(
1050 extension.id.clone(),
1051 ExtensionSmokeEvidence::from(extension)
1052 )
1053 .is_none(),
1054 "duplicate smoke evidence"
1055 );
1056 }
1057 Ok(evidence)
1058}
1059
1060fn normalize_smoke_statuses(extension: &mut SmokeConfigExtension) {
1061 if extension.direct.is_empty() {

Callers 1

discover_catalogFunction · 0.85

Calls 2

normalize_smoke_statusesFunction · 0.85

Tested by

no test coverage detected