in src/main.rs [1806:1847]
fn cmd_regenerate_unpublished(
out: &Arc<dyn Out>,
cfg: &Config,
_sub_args: &RegenerateUnpublishedArgs,
) -> Result<(), miette::Report> {
trace!("regenerating unpublished entries...");
if cfg.cli.locked {
// ERRORS: just a warning that you're holding it wrong, unclear if immediate or buffered,
// or if this should be a hard error, or if we should ignore the --locked flag and
// just do it anyway
writeln!(
out,
"warning: ran `regenerate unpublished` with --locked, this won't do anything!"
);
return Ok(());
}
let network = Network::acquire(cfg);
let mut store = Store::acquire(cfg, network.as_ref(), false)?;
// Strip all non-fresh entries from the unpublished table, marking the
// previously fresh entries as non-fresh.
if let Some(live_imports) = &mut store.live_imports {
for unpublished in live_imports.unpublished.values_mut() {
unpublished.retain_mut(|u| std::mem::replace(&mut u.is_fresh_import, false));
}
}
// Run a minimal store update to import new entries which would now be
// required for `check` to pass. Note that this won't ensure `check`
// actually passes after the change.
resolver::update_store(cfg, &mut store, |_| resolver::UpdateMode {
search_mode: resolver::SearchMode::PreferExemptions,
prune_exemptions: false,
prune_non_importable_audits: false,
prune_imports: false,
});
store.commit()?;
Ok(())
}