Very similar to `string()`, but as path, whose query can never fail.
Unified · Split
| @@ -466,6 +466,20 @@ impl<'event> GitConfig<'event> { · 465 unmodified lines | ||
| 466 | 466 | .map(|v| values::String::from(v).value) |
| 467 | 467 | } |
| 468 | 468 | |
| 469 | + /// Like [`value()`][GitConfig::value()], but returning an `Option` if the paty wasn't found. | |
| 470 | + /// | |
| 471 | + /// As strings perform no conversions, this will never fail. | |
| 472 | + pub fn path( | |
| 473 | + &'event self, | |
| 474 | + section_name: &str, | |
| 475 | + subsection_name: Option<&str>, | |
| 476 | + key: &str, | |
| 477 | + ) -> Option<values::Path<'event>> { | |
| 478 | + self.raw_value(section_name, subsection_name, key) | |
| 479 | + .ok() | |
| 480 | + .map(|v| values::Path::from(v)) | |
| 481 | + } | |
| 482 | + | |
| 469 | 483 | /// Like [`value()`][GitConfig::value()], but returning an `Option` if the boolean wasn't found. |
| 470 | 484 | pub fn boolean( |
| 471 | 485 | &'event self, |
| @@ -85,13 +85,15 @@ fn get_value_for_all_provided_values() -> crate::Result { · 84 unmodified lines | ||
| 85 | 85 | |
| 86 | 86 | let actual = file.value::<git_config::values::Path>("core", None, "location")?; |
| 87 | 87 | assert_eq!( |
| 88 | − &*actual, | |
| 89 | − "~/tmp".as_bytes(), | |
| 88 | + &*actual, "~/tmp", | |
| 90 | 89 | "no interpolation occurs when querying a path due to lack of context" |
| 91 | 90 | ); |
| 92 | 91 | let expected = PathBuf::from(format!("{}/tmp", dirs::home_dir().expect("empty home dir").display())); |
| 93 | 92 | assert_eq!(actual.interpolate(None).unwrap(), expected); |
| 94 | 93 | |
| 94 | + let actual = file.path("core", None, "location").expect("present"); | |
| 95 | + assert_eq!(&*actual, "~/tmp",); | |
| 96 | + | |
| 95 | 97 | Ok(()) |
| 96 | 98 | } |
| 97 | 99 | |