use std::path::Path;
use super::common::{report_installed, SyncTasks};
use super::progress::Progress;
use super::Res;
use crate::project;
use crate::registry::PackumentDetail;
pub(super) fn run(
packages: &[String],
dir: &Path,
detail: PackumentDetail,
progress: &Progress,
) -> Res {
let tasks = SyncTasks::new(progress, "registry.npmjs.org");
let (removed, installed) = project::remove_observed(
dir,
packages,
detail,
|event| tasks.on_resolve(event),
|event| tasks.on_install(event),
)?;
tasks.done(installed.len());
for name in &removed {
println!("- {name}");
}
for name in packages.iter().filter(|p| !removed.contains(p)) {
println!("{name}: not a dependency (skipped)");
}
report_installed(&installed);
Ok(())
}