fix(add): Clarify which version the features are added for

This gives a hint to users that we might not be showing the feature list
for the latest version but the earliest version.

Also when using a workspace dependency or re-using an existing
dependency, this is a good reminder of what the version requirement is
that was selected.

However, when the user or add (the common case) selected a full
precision requirement, this is redundant.

I'm also mixed on whether the meta version should show up.

Fixes #11073
This commit is contained in:
Ed Page 2022-09-12 09:37:05 -05:00
parent 391281b6d7
commit 73906aeaf8
26 changed files with 38 additions and 27 deletions

View file

@ -601,6 +601,7 @@ fn populate_dependency(mut dependency: Dependency, arg: &DepOp) -> Dependency {
pub struct DependencyEx {
dep: Dependency,
available_version: Option<semver::Version>,
available_features: BTreeMap<String, Vec<String>>,
}
@ -608,11 +609,13 @@ impl DependencyEx {
fn new(dep: Dependency) -> Self {
Self {
dep,
available_version: None,
available_features: Default::default(),
}
}
fn apply_summary(&mut self, summary: &Summary) {
self.available_version = Some(summary.version().clone());
self.available_features = summary
.features()
.iter()
@ -765,7 +768,15 @@ fn print_msg(shell: &mut Shell, dep: &DependencyEx, section: &[String]) -> Cargo
deactivated.sort();
if !activated.is_empty() || !deactivated.is_empty() {
let prefix = format!("{:>13}", " ");
shell.write_stderr(format_args!("{}Features:\n", prefix), &ColorSpec::new())?;
let suffix = if let Some(version) = &dep.available_version {
format!(" as of v{}", version)
} else {
"".to_owned()
};
shell.write_stderr(
format_args!("{}Features{}:\n", prefix, suffix),
&ColorSpec::new(),
)?;
for feat in activated {
shell.write_stderr(&prefix, &ColorSpec::new())?;
shell.write_stderr('+', &ColorSpec::new().set_bold(true).set_fg(Some(Green)))?;

View file

@ -2,7 +2,7 @@
warning: translating `linked_hash_map` to `linked-hash-map`
warning: translating `Inflector` to `inflector`
Adding linked-hash-map v0.5.4 to dependencies.
Features:
Features as of v0.5.4:
- clippy
- heapsize
- heapsize_impl
@ -11,7 +11,7 @@ warning: translating `Inflector` to `inflector`
- serde_impl
- serde_test
Adding inflector v0.11.4 to dependencies.
Features:
Features as of v0.11.4:
+ heavyweight
+ lazy_static
+ regex

View file

@ -1,4 +1,4 @@
Adding cargo-list-test-fixture-dependency (local) to build-dependencies.
Features:
Features as of v0.0.0:
- one
- two

View file

@ -1,5 +1,5 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base

View file

@ -1,4 +1,4 @@
Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
Features:
Features as of v0.0.0:
- one
- two

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ eyes
- ears
- mouth

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
- ears
- eyes
- mouth

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ eyes
+ nose
- ears

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ eyes
- ears
- mouth

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ eyes
+ nose
- ears

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ noze
- ears
- eyes

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
- ears
- eyes
- mouth

View file

@ -1,5 +1,5 @@
Adding your-face (local) to dependencies.
Features:
Features as of v0.1.3:
+ mouth
+ nose
- eyes

View file

@ -1,5 +1,5 @@
Adding your-face (local) to dependencies.
Features:
Features as of v0.1.3:
- eyes
- mouth
- nose

View file

@ -1,5 +1,5 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ eyes
+ nose
- ears

View file

@ -1,3 +1,3 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ test

View file

@ -1,7 +1,7 @@
Updating `dummy-registry` index
Adding unrelateed-crate v99999.0.0 to dependencies.
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ ears
+ eyes
+ mouth

View file

@ -1,4 +1,4 @@
Adding your-face (local) to dev-dependencies.
Features:
Features as of v0.0.0:
+ mouth
+ nose

View file

@ -1,4 +1,4 @@
Adding your-face (local) to optional dependencies.
Features:
Features as of v0.0.0:
+ mouth
+ nose

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
- ears
- eyes
- mouth

View file

@ -1,4 +1,4 @@
Adding your-face (local) to optional dependencies.
Features:
Features as of v0.0.0:
+ mouth
+ nose

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
+ eyes
+ nose
- ears

View file

@ -1,5 +1,5 @@
Adding foo (local) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base

View file

@ -1,6 +1,6 @@
Updating `dummy-registry` index
Adding your-face v99999.0.0 to dependencies.
Features:
Features as of v99999.0.0+my-package:
- ears
- eyes
- mouth

View file

@ -1,5 +1,5 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base