Skip to content

Commit 99e4847

Browse files
committed
fix(add): Stop auto-formatting content
Huh, overlooked the cargo side when I fixed this in killercup/cargo-edit#725 Fixes #10850
1 parent 716ae62 commit 99e4847

File tree

11 files changed

+43
-30
lines changed

11 files changed

+43
-30
lines changed

src/cargo/util/toml_mut/dependency.rs

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -464,17 +464,17 @@ impl Dependency {
464464
} else if let Some(table) = item.as_table_like_mut() {
465465
match &self.source {
466466
Some(Source::Registry(src)) => {
467-
table.insert("version", toml_edit::value(src.version.as_str()));
467+
overwrite_value(table, "version", src.version.as_str());
468468

469469
for key in ["path", "git", "branch", "tag", "rev", "workspace"] {
470470
table.remove(key);
471471
}
472472
}
473473
Some(Source::Path(src)) => {
474474
let relpath = path_field(crate_root, &src.path);
475-
table.insert("path", toml_edit::value(relpath));
475+
overwrite_value(table, "path", relpath);
476476
if let Some(r) = src.version.as_deref() {
477-
table.insert("version", toml_edit::value(r));
477+
overwrite_value(table, "version", r);
478478
} else {
479479
table.remove("version");
480480
}
@@ -484,24 +484,24 @@ impl Dependency {
484484
}
485485
}
486486
Some(Source::Git(src)) => {
487-
table.insert("git", toml_edit::value(src.git.as_str()));
487+
overwrite_value(table, "git", src.git.as_str());
488488
if let Some(branch) = src.branch.as_deref() {
489-
table.insert("branch", toml_edit::value(branch));
489+
overwrite_value(table, "branch", branch);
490490
} else {
491491
table.remove("branch");
492492
}
493493
if let Some(tag) = src.tag.as_deref() {
494-
table.insert("tag", toml_edit::value(tag));
494+
overwrite_value(table, "tag", tag);
495495
} else {
496496
table.remove("tag");
497497
}
498498
if let Some(rev) = src.rev.as_deref() {
499-
table.insert("rev", toml_edit::value(rev));
499+
overwrite_value(table, "rev", rev);
500500
} else {
501501
table.remove("rev");
502502
}
503503
if let Some(r) = src.version.as_deref() {
504-
table.insert("version", toml_edit::value(r));
504+
overwrite_value(table, "version", r);
505505
} else {
506506
table.remove("version");
507507
}
@@ -511,7 +511,7 @@ impl Dependency {
511511
}
512512
}
513513
Some(Source::Workspace(_)) => {
514-
table.insert("workspace", toml_edit::value(true));
514+
overwrite_value(table, "workspace", true);
515515
table.set_dotted(true);
516516
key.fmt();
517517
for key in [
@@ -533,7 +533,7 @@ impl Dependency {
533533
}
534534
if table.contains_key("version") {
535535
if let Some(r) = self.registry.as_deref() {
536-
table.insert("registry", toml_edit::value(r));
536+
overwrite_value(table, "registry", r);
537537
} else {
538538
table.remove("registry");
539539
}
@@ -542,11 +542,11 @@ impl Dependency {
542542
}
543543

544544
if self.rename.is_some() {
545-
table.insert("package", toml_edit::value(self.name.as_str()));
545+
overwrite_value(table, "package", self.name.as_str());
546546
}
547547
match self.default_features {
548548
Some(v) => {
549-
table.insert("default-features", toml_edit::value(v));
549+
overwrite_value(table, "default-features", v);
550550
}
551551
None => {
552552
table.remove("default-features");
@@ -564,29 +564,40 @@ impl Dependency {
564564
})
565565
.unwrap_or_default();
566566
features.extend(new_features.iter().map(|s| s.as_str()));
567-
let features = toml_edit::value(features.into_iter().collect::<toml_edit::Value>());
567+
let features = features.into_iter().collect::<toml_edit::Value>();
568568
table.set_dotted(false);
569-
table.insert("features", features);
569+
overwrite_value(table, "features", features);
570570
} else {
571571
table.remove("features");
572572
}
573573
match self.optional {
574574
Some(v) => {
575575
table.set_dotted(false);
576-
table.insert("optional", toml_edit::value(v));
576+
overwrite_value(table, "optional", v);
577577
}
578578
None => {
579579
table.remove("optional");
580580
}
581581
}
582-
583-
table.fmt();
584582
} else {
585583
unreachable!("Invalid dependency type: {}", item.type_name());
586584
}
587585
}
588586
}
589587

588+
fn overwrite_value(
589+
table: &mut dyn toml_edit::TableLike,
590+
key: &str,
591+
value: impl Into<toml_edit::Value>,
592+
) {
593+
let mut value = value.into();
594+
let existing = table.entry(key).or_insert_with(|| Default::default());
595+
if let Some(existing_value) = existing.as_value() {
596+
*value.decor_mut() = existing_value.decor().clone();
597+
}
598+
*existing = toml_edit::Item::Value(value);
599+
}
600+
590601
fn invalid_type(dep: &str, key: &str, actual: &str, expected: &str) -> anyhow::Error {
591602
anyhow::format_err!("Found {actual} for {key} when {expected} was expected for {dep}")
592603
}

tests/testsuite/cargo_add/overwrite_git_with_path/out/primary/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ name = "cargo-list-test-fixture"
55
version = "0.0.0"
66

77
[dependencies]
8-
cargo-list-test-fixture-dependency = { optional = true, path = "../dependency", version = "0.0.0" }
8+
cargo-list-test-fixture-dependency = { optional = true , path = "../dependency", version = "0.0.0" }

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ name = "cargo-list-test-fixture"
55
version = "0.0.0"
66

77
[dependencies]
8-
my-package1 = { version = "99999.0.0" }
9-
my-package2 = { version = "0.4.1" }
8+
my-package1 = { version = "99999.0.0"}
9+
my-package2 = { version = "0.4.1"}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ default = []
99
other = ["your-face/nose"]
1010

1111
[dependencies]
12-
your-face = { version = "99999.0.0" }
13-
my-package2 = { version = "0.4.1" }
12+
your-face = { version = "99999.0.0"}
13+
my-package2 = { version = "0.4.1"}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ name = "cargo-list-test-fixture"
55
version = "0.0.0"
66

77
[dependencies]
8-
your-face={ version = "99999.0.0", features = ["eyes", "nose"] } # Hello world
8+
your-face={version="99999.0.0",features=["eyes", "nose"]} # Hello world

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ name = "cargo-list-test-fixture"
55
version = "0.0.0"
66

77
[dependencies]
8-
versioned-package = { version = "0.3.0", optional = true, git = "[ROOTURL]/versioned-package" }
8+
versioned-package = { version = "0.3.0", optional = true , git = "[ROOTURL]/versioned-package" }

tests/testsuite/cargo_add/overwrite_version_with_path/out/primary/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ name = "cargo-list-test-fixture"
55
version = "0.0.0"
66

77
[dependencies]
8-
cargo-list-test-fixture-dependency = { version = "0.0.0", optional = true, path = "../dependency" }
8+
cargo-list-test-fixture-dependency = { version = "0.0.0", optional = true , path = "../dependency" }

tests/testsuite/cargo_add/overwrite_workspace_dep_features/out/primary/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ name = "bar"
33
version = "0.0.0"
44

55
[dependencies]
6-
foo = { features = ["test"], path = "../dependency", version = "0.0.0" }
6+
foo = { features = ["test"] , path = "../dependency", version = "0.0.0" }

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ edition = "2021"
66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77

88
[dependencies.your-face]
9-
version = "99999.0.0"
10-
features = []
9+
# Leading version
10+
version = "99999.0.0" # Trailing version
11+
# Leading features
12+
features = [] # Trailing features

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ edition = "2021"
66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77

88
[dependencies]
9-
your-face = { version = "99999.0.0" }
9+
your-face = { version = "99999.0.0"}
1010

1111
[features]
1212
default = [

0 commit comments

Comments
 (0)