| 61 | } |
| 62 | |
| 63 | fn parse_config_name(name: &str) -> (String, Option<String>, String) { |
| 64 | let parts: Vec<&str> = name.split('.').collect(); |
| 65 | match parts.len() { |
| 66 | 1 => (parts[0].to_string(), None, String::new()), |
| 67 | 2 => (parts[0].to_string(), None, parts[1].to_string()), |
| 68 | 3 => ( |
| 69 | parts[0].to_string(), |
| 70 | Some(parts[1].to_string()), |
| 71 | parts[2].to_string(), |
| 72 | ), |
| 73 | _ => { |
| 74 | // Handle cases like remote.origin.url or branch.main.remote |
| 75 | let section = parts[0].to_string(); |
| 76 | let key = parts[parts.len() - 1].to_string(); |
| 77 | let subsection = parts[1..parts.len() - 1].join("."); |
| 78 | (section, Some(subsection), key) |
| 79 | } |
| 80 | } |
| 81 | } |