Skip to content

Commit 318072f

Browse files
committed
preserve dependency features order
1 parent 5b90c4b commit 318072f

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

src/cargo/util/toml_mut/dependency.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ use std::fmt::{Display, Formatter};
44
use std::path::{Path, PathBuf};
55

66
use indexmap::IndexSet;
7+
use itertools::Itertools;
78
use toml_edit::KeyMut;
89

910
use super::manifest::str_or_1_len_table;
1011
use crate::core::GitReference;
1112
use crate::core::SourceId;
1213
use crate::core::Summary;
14+
use crate::util::toml_mut::is_sorted;
1315
use crate::CargoResult;
1416
use crate::GlobalContext;
1517

@@ -588,8 +590,13 @@ impl Dependency {
588590
.collect::<Option<IndexSet<_>>>()
589591
})
590592
.unwrap_or_default();
593+
let is_already_sorted = is_sorted(features.iter());
591594
features.extend(new_features.iter().map(|s| s.as_str()));
592-
let features = features.into_iter().collect::<toml_edit::Value>();
595+
let features = if is_already_sorted {
596+
features.into_iter().sorted().collect::<toml_edit::Value>()
597+
} else {
598+
features.into_iter().collect::<toml_edit::Value>()
599+
};
593600
table.set_dotted(false);
594601
overwrite_value(table, "features", features);
595602
} else {

tests/testsuite/cargo_add/overwrite_inline_features/out/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ edition = "2015"
88
[dependencies]
99
unrelateed-crate = "99999.0.0"
1010
# Before your-face
11-
your-face = { version = "99999.0.0", features = ["eyes", "nose", "mouth", "ears"] } # After your-face
11+
your-face = { version = "99999.0.0", features = ["ears", "eyes", "mouth", "nose"] } # After your-face
1212
# End

tests/testsuite/cargo_add/preserve_features_sorted/out/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package = { version = "99999.0.0", features = ["a", "b", "c", "e", "d"] }
9+
my-package = { version = "99999.0.0", features = ["a", "b", "c", "d", "e"] }

0 commit comments

Comments
 (0)