libjsonutils/
inner.rs

1use std::{
2    fs::{create_dir_all, read_to_string},
3    path::Path,
4};
5
6use serde_json::{from_str, Value};
7
8use crate::error::Error;
9
10#[doc(hidden)]
11pub(crate) fn _create_parent_dir<P: AsRef<Path>>(path: P) -> Result<(), Error> {
12    let path = path.as_ref();
13    let parent = path.parent().unwrap_or(Path::new("./"));
14
15    if path.to_str().is_some() && path.to_str() != Some("./") {
16        create_dir_all(parent).map_err(Error::io)?;
17    }
18
19    Ok(())
20}
21
22#[doc(hidden)]
23pub(crate) fn _read_json_inner<P: AsRef<Path>>(path: P) -> Result<Value, Error> {
24    let content = read_to_string(path).map_err(Error::io)?;
25    from_str(&content).map_err(Error::json)
26}