cargo-wsdeps 0.1.6

Cargo subcommand to manage dependencies in a workspace.
Documentation
use std::collections::{BTreeMap, BTreeSet};

use crate::MemberDependency;

pub fn print_changes(
    add: &BTreeMap<String, Vec<MemberDependency>>,
    remove: &BTreeSet<String>,
    inline: &BTreeMap<String, MemberDependency>,
) {
    if !add.is_empty() {
        println!("Move dependencies from individual crates to [workspace.dependencies]:");
        for (name, members) in add {
            println!(
                "  {name}: {}",
                members
                    .iter()
                    .map(|member| member.name.clone())
                    .collect::<Vec<_>>()
                    .join(", ")
            );
        }
    }

    if !inline.is_empty() {
        println!(
            "Move single-use dependencies from [workspace.dependencies] back into the member:"
        );
        for (name, member) in inline {
            println!("  {name}: {}", member.name);
        }
    }

    if !remove.is_empty() {
        let remove_only: Vec<&String> =
            remove.iter().filter(|n| !inline.contains_key(*n)).collect();
        if !remove_only.is_empty() {
            println!("Remove dependencies from [workspace.dependencies]:");
            for name in remove_only {
                println!("  {name}");
            }
        }
    }
}