in tools/pubsys/src/repo.rs [108:189]
fn update_manifest(repo_args: &RepoArgs, manifest: &mut Manifest) -> Result<()> {
// Add update =^..^= =^..^= =^..^= =^..^=
let filename = |path: &PathBuf| -> Result<String> {
Ok(path
.file_name()
.context(error::InvalidImagePath { path })?
.to_str()
.context(error::NonUtf8Path { path })?
.to_string())
};
let images = Images {
boot: filename(&repo_args.boot_image)?,
root: filename(&repo_args.root_image)?,
hash: filename(&repo_args.hash_image)?,
};
info!(
"Adding update to manifest for version: {}, arch: {}, variant: {}",
repo_args.version, repo_args.arch, repo_args.variant
);
manifest
.add_update(
repo_args.version.clone(),
None,
repo_args.arch.clone(),
repo_args.variant.clone(),
images,
)
.context(error::AddUpdate)?;
// Add migrations =^..^= =^..^= =^..^= =^..^=
info!(
"Using release config from path: {}",
repo_args.release_config_path.display()
);
let release =
Release::from_path(&repo_args.release_config_path).context(error::UpdateMetadataRead {
path: &repo_args.release_config_path,
})?;
trace!(
"Adding migrations to manifest for versions: {:#?}",
release
.migrations
.keys()
.map(|(from, to)| format!("({}, {})", from, to))
.collect::<Vec<String>>()
);
// Replace the manifest 'migrations' section with the new data
manifest.migrations = release.migrations;
// Add update waves =^..^= =^..^= =^..^= =^..^=
let wave_start_time = repo_args.release_start_time.unwrap_or(*DEFAULT_START_TIME);
info!(
"Using wave policy from path: {}",
repo_args.wave_policy_path.display()
);
info!(
"Offsets from that file will be added to the release start time of: {}",
wave_start_time
);
let waves =
UpdateWaves::from_path(&repo_args.wave_policy_path).context(error::UpdateMetadataRead {
path: &repo_args.wave_policy_path,
})?;
manifest
.set_waves(
repo_args.variant.clone(),
repo_args.arch.clone(),
repo_args.version.clone(),
wave_start_time,
&waves,
)
.context(error::SetWaves {
wave_policy_path: &repo_args.wave_policy_path,
})?;
Ok(())
}