mirror of
https://github.com/sagiegurari/cargo-make
synced 2026-06-08 17:20:03 +00:00
Fix: Keep env order for extended makefiles #523
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
## CHANGELOG
|
||||
|
||||
### v0.32.14
|
||||
|
||||
* Fix: Keep env order for extended makefiles #523
|
||||
|
||||
### v0.32.13 (2021-03-05)
|
||||
|
||||
* Enhancement: Support rust-script as an additional rust runner #516
|
||||
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
|
||||
extend = "env.toml"
|
||||
|
||||
[env]
|
||||
SIMPLE = "EXTENDED VALUE"
|
||||
+23
-22
@@ -48,30 +48,31 @@ fn merge_env(
|
||||
if !key_str.starts_with("CARGO_MAKE_CURRENT_TASK_") {
|
||||
let value_clone = value.clone();
|
||||
|
||||
if merged.contains_key(&key_str) {
|
||||
let base_value = merged.swap_remove(&key_str).unwrap();
|
||||
match merged.get(&key_str) {
|
||||
Some(base_value) => {
|
||||
let base_value_clone = base_value.clone();
|
||||
match (base_value_clone, value_clone.clone()) {
|
||||
(
|
||||
EnvValue::Profile(ref base_profile_env),
|
||||
EnvValue::Profile(ref extended_profile_env),
|
||||
) => {
|
||||
let mut base_profile_env_mut = base_profile_env.clone();
|
||||
let mut extended_profile_env_mut = extended_profile_env.clone();
|
||||
|
||||
match (base_value, value_clone.clone()) {
|
||||
(
|
||||
EnvValue::Profile(ref base_profile_env),
|
||||
EnvValue::Profile(ref extended_profile_env),
|
||||
) => {
|
||||
let mut base_profile_env_mut = base_profile_env.clone();
|
||||
let mut extended_profile_env_mut = extended_profile_env.clone();
|
||||
let merged_sub_env =
|
||||
merge_env(&mut base_profile_env_mut, &mut extended_profile_env_mut);
|
||||
|
||||
let merged_sub_env =
|
||||
merge_env(&mut base_profile_env_mut, &mut extended_profile_env_mut);
|
||||
|
||||
merged.insert(key_str, EnvValue::Profile(merged_sub_env));
|
||||
}
|
||||
_ => {
|
||||
merged.insert(key_str, value_clone);
|
||||
()
|
||||
}
|
||||
};
|
||||
} else {
|
||||
merged.insert(key_str, value_clone);
|
||||
}
|
||||
merged.insert(key_str, EnvValue::Profile(merged_sub_env));
|
||||
}
|
||||
_ => {
|
||||
merged.insert(key_str, value_clone);
|
||||
}
|
||||
};
|
||||
}
|
||||
None => {
|
||||
merged.insert(key_str, value_clone);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -404,6 +404,21 @@ fn load_descriptors_no_load_workspace_makefile() {
|
||||
assert!(task.is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn load_env_extended_override() {
|
||||
let toml_file = "./src/lib/test/makefiles/env-extended.toml";
|
||||
|
||||
envmnt::remove_all(&vec!["IF_UNDEFINED", "COMPOSITE_OF_MAPPED"]);
|
||||
let config = load(toml_file, true, None, false).unwrap();
|
||||
environment::set_env_for_config(config.env, None, false);
|
||||
|
||||
assert!(envmnt::is_equal("IF_UNDEFINED", "EXTENDED"));
|
||||
assert!(envmnt::is_equal("COMPOSITE_OF_MAPPED", "VALUE: EXTENDED"));
|
||||
|
||||
envmnt::remove_all(&vec!["IF_UNDEFINED", "COMPOSITE_OF_MAPPED"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn load_env_override() {
|
||||
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
|
||||
extend = "./env.toml"
|
||||
|
||||
[env]
|
||||
IF_UNDEFINED = "EXTENDED"
|
||||
Reference in New Issue
Block a user