|
@@ -1,15 +1,11 @@
|
|
use super::{use_filter, use_lowercase};
|
|
use super::{use_filter, use_lowercase};
|
|
use serde_yaml::{self, Mapping, Sequence, Value};
|
|
use serde_yaml::{self, Mapping, Sequence, Value};
|
|
|
|
|
|
-const MERGE_FIELDS: [&str; 10] = [
|
|
|
|
|
|
+const MERGE_FIELDS: [&str; 6] = [
|
|
"prepend-rules",
|
|
"prepend-rules",
|
|
"append-rules",
|
|
"append-rules",
|
|
- "prepend-rule-providers",
|
|
|
|
- "append-rule-providers",
|
|
|
|
"prepend-proxies",
|
|
"prepend-proxies",
|
|
"append-proxies",
|
|
"append-proxies",
|
|
- "prepend-proxy-providers",
|
|
|
|
- "append-proxy-providers",
|
|
|
|
"prepend-proxy-groups",
|
|
"prepend-proxy-groups",
|
|
"append-proxy-groups",
|
|
"append-proxy-groups",
|
|
];
|
|
];
|
|
@@ -37,39 +33,6 @@ pub fn use_merge(merge: Mapping, config: Mapping) -> Mapping {
|
|
let merge_list = MERGE_FIELDS.iter().map(|s| s.to_string());
|
|
let merge_list = MERGE_FIELDS.iter().map(|s| s.to_string());
|
|
let merge = use_filter(merge, &merge_list.collect());
|
|
let merge = use_filter(merge, &merge_list.collect());
|
|
|
|
|
|
- ["rule-providers", "proxy-providers"]
|
|
|
|
- .iter()
|
|
|
|
- .for_each(|key_str| {
|
|
|
|
- let key_val = Value::from(key_str.to_string());
|
|
|
|
-
|
|
|
|
- let mut map = Mapping::default();
|
|
|
|
-
|
|
|
|
- map = config.get(&key_val).map_or(map.clone(), |val| {
|
|
|
|
- val.as_mapping().map_or(map, |v| v.clone())
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- let pre_key = Value::from(format!("prepend-{key_str}"));
|
|
|
|
- let post_key = Value::from(format!("append-{key_str}"));
|
|
|
|
-
|
|
|
|
- if let Some(pre_val) = merge.get(&pre_key) {
|
|
|
|
- if pre_val.is_mapping() {
|
|
|
|
- let mut pre_val = pre_val.as_mapping().unwrap().clone();
|
|
|
|
- pre_val.extend(map);
|
|
|
|
- map = pre_val;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if let Some(post_val) = merge.get(&post_key) {
|
|
|
|
- if post_val.is_mapping() {
|
|
|
|
- map.extend(post_val.as_mapping().unwrap().clone());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if !map.is_empty() {
|
|
|
|
- config.insert(key_val, Value::from(map));
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
["rules", "proxies", "proxy-groups"]
|
|
["rules", "proxies", "proxy-groups"]
|
|
.iter()
|
|
.iter()
|
|
.for_each(|key_str| {
|
|
.for_each(|key_str| {
|