Skip to content

Commit 73906ae

Browse files
committed
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
1 parent 391281b commit 73906ae

File tree

26 files changed

+38
-27
lines changed

26 files changed

+38
-27
lines changed

src/cargo/ops/cargo_add/mod.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,18 +601,21 @@ fn populate_dependency(mut dependency: Dependency, arg: &DepOp) -> Dependency {
601601

602602
pub struct DependencyEx {
603603
dep: Dependency,
604+
available_version: Option<semver::Version>,
604605
available_features: BTreeMap<String, Vec<String>>,
605606
}
606607

607608
impl DependencyEx {
608609
fn new(dep: Dependency) -> Self {
609610
Self {
610611
dep,
612+
available_version: None,
611613
available_features: Default::default(),
612614
}
613615
}
614616

615617
fn apply_summary(&mut self, summary: &Summary) {
618+
self.available_version = Some(summary.version().clone());
616619
self.available_features = summary
617620
.features()
618621
.iter()
@@ -765,7 +768,15 @@ fn print_msg(shell: &mut Shell, dep: &DependencyEx, section: &[String]) -> Cargo
765768
deactivated.sort();
766769
if !activated.is_empty() || !deactivated.is_empty() {
767770
let prefix = format!("{:>13}", " ");
768-
shell.write_stderr(format_args!("{}Features:\n", prefix), &ColorSpec::new())?;
771+
let suffix = if let Some(version) = &dep.available_version {
772+
format!(" as of v{}", version)
773+
} else {
774+
"".to_owned()
775+
};
776+
shell.write_stderr(
777+
format_args!("{}Features{}:\n", prefix, suffix),
778+
&ColorSpec::new(),
779+
)?;
769780
for feat in activated {
770781
shell.write_stderr(&prefix, &ColorSpec::new())?;
771782
shell.write_stderr('+', &ColorSpec::new().set_bold(true).set_fg(Some(Green)))?;

tests/testsuite/cargo_add/add_normalized_name_external/stderr.log

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
warning: translating `linked_hash_map` to `linked-hash-map`
33
warning: translating `Inflector` to `inflector`
44
Adding linked-hash-map v0.5.4 to dependencies.
5-
Features:
5+
Features as of v0.5.4:
66
- clippy
77
- heapsize
88
- heapsize_impl
@@ -11,7 +11,7 @@ warning: translating `Inflector` to `inflector`
1111
- serde_impl
1212
- serde_test
1313
Adding inflector v0.11.4 to dependencies.
14-
Features:
14+
Features as of v0.11.4:
1515
+ heavyweight
1616
+ lazy_static
1717
+ regex
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
Adding cargo-list-test-fixture-dependency (local) to build-dependencies.
2-
Features:
2+
Features as of v0.0.0:
33
- one
44
- two

tests/testsuite/cargo_add/detect_workspace_inherit_features/stderr.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Adding foo (workspace) to dependencies.
2-
Features:
2+
Features as of v0.0.0:
33
+ default-base
44
+ default-merge-base
55
+ default-test-base
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
Adding cargo-list-test-fixture-dependency (local) to dev-dependencies.
2-
Features:
2+
Features as of v0.0.0:
33
- one
44
- two

tests/testsuite/cargo_add/features/stderr.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Updating `dummy-registry` index
22
Adding your-face v99999.0.0 to dependencies.
3-
Features:
3+
Features as of v99999.0.0+my-package:
44
+ eyes
55
- ears
66
- mouth

tests/testsuite/cargo_add/features_empty/stderr.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Updating `dummy-registry` index
22
Adding your-face v99999.0.0 to dependencies.
3-
Features:
3+
Features as of v99999.0.0+my-package:
44
- ears
55
- eyes
66
- mouth

tests/testsuite/cargo_add/features_multiple_occurrences/stderr.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Updating `dummy-registry` index
22
Adding your-face v99999.0.0 to dependencies.
3-
Features:
3+
Features as of v99999.0.0+my-package:
44
+ eyes
55
+ nose
66
- ears

tests/testsuite/cargo_add/features_preserve/stderr.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Updating `dummy-registry` index
22
Adding your-face v99999.0.0 to dependencies.
3-
Features:
3+
Features as of v99999.0.0+my-package:
44
+ eyes
55
- ears
66
- mouth

tests/testsuite/cargo_add/features_spaced_values/stderr.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Updating `dummy-registry` index
22
Adding your-face v99999.0.0 to dependencies.
3-
Features:
3+
Features as of v99999.0.0+my-package:
44
+ eyes
55
+ nose
66
- ears

0 commit comments

Comments
 (0)