please-install 1.2.0

A unified interface package manager for many OSes
Documentation
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)
}