(content: &str)
| 472 | } |
| 473 | |
| 474 | fn parse_jsonc(content: &str) -> Result<Config> { |
| 475 | let parse_options = ParseOptions { |
| 476 | allow_trailing_commas: true, |
| 477 | ..Default::default() |
| 478 | }; |
| 479 | let parsed = parse_to_serde_value(content, &parse_options) |
| 480 | .with_context(|| "Failed to parse JSONC")? |
| 481 | .context("Config content is empty")?; |
| 482 | serde_json::from_value(parsed).with_context(|| "Failed to parse config JSON") |
| 483 | } |
| 484 | |
| 485 | fn normalize_existing_path(path: &Path) -> PathBuf { |
| 486 | fs::canonicalize(path).unwrap_or_else(|_| path.to_path_buf()) |
no outgoing calls