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 | .map(|v| values::String::from(v).value) | 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 | /// Like [`value()`][GitConfig::value()], but returning an `Option` if the boolean wasn't found. | 483 | /// Like [`value()`][GitConfig::value()], but returning an `Option` if the boolean wasn't found. |
| 470 | pub fn boolean( | 484 | pub fn boolean( |
| 471 | &'event self, | 485 | &'event self, |
| @@ -85,13 +85,15 @@ fn get_value_for_all_provided_values() -> crate::Result { · 84 unmodified lines | |||
| 85 | 85 | ||
| 86 | let actual = file.value::<git_config::values::Path>("core", None, "location")?; | 86 | let actual = file.value::<git_config::values::Path>("core", None, "location")?; |
| 87 | assert_eq!( | 87 | assert_eq!( |
| 88 | &*actual, | 88 | &*actual, "~/tmp", |
| 89 | "~/tmp".as_bytes(), | ||
| 90 | "no interpolation occurs when querying a path due to lack of context" | 89 | "no interpolation occurs when querying a path due to lack of context" |
| 91 | ); | 90 | ); |
| 92 | let expected = PathBuf::from(format!("{}/tmp", dirs::home_dir().expect("empty home dir").display())); | 91 | let expected = PathBuf::from(format!("{}/tmp", dirs::home_dir().expect("empty home dir").display())); |
| 93 | assert_eq!(actual.interpolate(None).unwrap(), expected); | 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 | Ok(()) | 97 | Ok(()) |
| 96 | } | 98 | } |
| 97 | 99 | ||