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

Function check_generated_manifest

xtask/src/main.rs:5336–5389  ·  view source on GitHub ↗
(manifest: &SourcesManifest, strict: bool)

Source from the content-addressed store, hash-verified

5334}
5335
5336fn check_generated_manifest(manifest: &SourcesManifest, strict: bool) -> Result<()> {
5337 let path = Path::new(GENERATED_ASSETS_DIR).join("manifest.json");
5338 if !path.exists() {
5339 if strict {
5340 bail!("generated asset manifest is missing at {}", path.display());
5341 }
5342 eprintln!(
5343 "warning: generated asset manifest is missing at {}",
5344 path.display()
5345 );
5346 return Ok(());
5347 }
5348
5349 let text = fs::read_to_string(&path).with_context(|| format!("read {}", path.display()))?;
5350 let generated: GeneratedAssetManifest =
5351 serde_json::from_str(&text).with_context(|| format!("parse {}", path.display()))?;
5352
5353 let mut drift = Vec::new();
5354 for source in &manifest.sources {
5355 match generated
5356 .sources
5357 .iter()
5358 .find(|generated| generated.name == source.name)
5359 {
5360 Some(generated)
5361 if generated.url == source.url
5362 && generated.branch == source.branch
5363 && generated.commit == source.commit => {}
5364 Some(generated) => drift.push(format!(
5365 "{} generated={}/{}@{} expected={}/{}@{}",
5366 source.name,
5367 generated.url,
5368 generated.branch,
5369 generated.commit,
5370 source.url,
5371 source.branch,
5372 source.commit
5373 )),
5374 None => drift.push(format!("{} missing from generated manifest", source.name)),
5375 }
5376 }
5377
5378 if drift.is_empty() {
5379 println!("generated asset manifest source pins match assets/sources.toml");
5380 return Ok(());
5381 }
5382
5383 let details = drift.join("; ");
5384 if strict {
5385 bail!("generated asset manifest has stale source pins: {details}");
5386 }
5387 eprintln!("warning: generated asset manifest has stale source pins: {details}");
5388 Ok(())
5389}
5390
5391fn verify_committed_assets() -> Result<()> {
5392 check_source_free_repo()?;

Callers 3

assetsFunction · 0.85
release_build_assetsFunction · 0.85

Calls 3

iterMethod · 0.80
pushMethod · 0.80
joinMethod · 0.45

Tested by

no test coverage detected