Skip to content

Commit

Permalink
fix(add): Clarify which version the features are added for
Browse files Browse the repository at this point in the history
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 rust-lang#11073
  • Loading branch information
epage committed Sep 12, 2022
1 parent 4f59add commit 78f1c5e
Show file tree
Hide file tree
Showing 26 changed files with 38 additions and 27 deletions.
13 changes: 12 additions & 1 deletion src/cargo/ops/cargo_add/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -601,18 +601,21 @@ 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>>,
}

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()
Expand Down Expand Up @@ -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)))?;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Adding cargo-list-test-fixture-dependency (local) to build-dependencies.
Features:
Features as of v0.0.0:
- one
- two
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
Features:
Features as of v0.0.0:
- one
- two
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/features/stderr.log
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/features_empty/stderr.log
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/features_preserve/stderr.log
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/features_unknown/stderr.log
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/list_features/stderr.log
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/list_features_path/stderr.log
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Adding your-face (local) to dependencies.
Features:
Features as of v0.1.3:
+ mouth
+ nose
- eyes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Adding your-face (local) to dependencies.
Features:
Features as of v0.1.3:
- eyes
- mouth
- nose
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/overwrite_features/stderr.log
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ test
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Adding your-face (local) to dev-dependencies.
Features:
Features as of v0.0.0:
+ mouth
+ nose
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/overwrite_name_noop/stderr.log
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Adding your-face (local) to optional dependencies.
Features:
Features as of v0.0.0:
+ mouth
+ nose
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/overwrite_path_noop/stderr.log
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Adding your-face (local) to optional dependencies.
Features:
Features as of v0.0.0:
+ mouth
+ nose
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Adding foo (local) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/cargo_add/require_weak/stderr.log
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Adding foo (workspace) to dependencies.
Features:
Features as of v0.0.0:
+ default-base
+ default-merge-base
+ default-test-base
Expand Down

0 comments on commit 78f1c5e

Please sign in to comment.