use eyre::Result;
use crate::package::Package;
use crate::track::{
load_tracks,
remove_installed_packages,
save_installed_packages,
};
use crate::vendors::Vendor;
pub fn change_vendor(origin: Vendor, destination: Vendor) -> Result<i32> {
if ! destination.is_available()? {
eprintln!("{} is not available", destination);
return Ok(1);
}
let tracks = load_tracks()?;
let mut tracks = tracks.iter()
.filter(|track| track.vendor == origin)
.map(Package::clone)
.collect::<Vec<_>>();
if tracks.is_empty() {
eprintln!("no package found for vendor {}", origin);
return Ok(2);
}
remove_installed_packages(tracks.clone())?;
for track in &mut tracks {
track.vendor = destination;
}
save_installed_packages(tracks, false)?;
Ok(0)
}