Start computing workspace configuration more dynamically

This commit is contained in:
Antonio Scandurra 2023-03-15 14:34:48 +01:00
parent ed9927b495
commit 60d3fb48e2
8 changed files with 174 additions and 92 deletions

View file

@ -9,7 +9,7 @@ path = "src/util.rs"
doctest = false
[features]
test-support = ["serde_json", "tempdir", "git2"]
test-support = ["tempdir", "git2"]
[dependencies]
anyhow = "1.0.38"
@ -19,11 +19,10 @@ log = { version = "0.4.16", features = ["kv_unstable_serde"] }
lazy_static = "1.4.0"
rand = { workspace = true }
tempdir = { version = "0.3.7", optional = true }
serde_json = { version = "1.0", features = ["preserve_order"], optional = true }
serde_json = { version = "1.0", features = ["preserve_order"] }
git2 = { version = "0.15", default-features = false, optional = true }
dirs = "3.0"
[dev-dependencies]
tempdir = { version = "0.3.7" }
serde_json = { version = "1.0", features = ["preserve_order"] }
git2 = { version = "0.15", default-features = false }

View file

@ -83,6 +83,24 @@ where
}
}
pub fn merge_json_value_into(source: serde_json::Value, target: &mut serde_json::Value) {
use serde_json::Value;
match (source, target) {
(Value::Object(source), Value::Object(target)) => {
for (key, value) in source {
if let Some(target) = target.get_mut(&key) {
merge_json_value_into(value, target);
} else {
target.insert(key.clone(), value);
}
}
}
(source, target) => *target = source,
}
}
pub trait ResultExt {
type Ok;