1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use super::get_root_dir;
use serde::{de::DeserializeOwned, Serialize};
use serde_json::{from_reader, to_writer, Error as SerdeError};
use std::io::prelude::{Read, Write};
use std::path::PathBuf;

pub fn get_config<C, R>(reader: R) -> Result<C, SerdeError>
where
    C: DeserializeOwned,
    R: Read,
{
    from_reader(reader)
}

pub fn write_config<C, W>(writer: &mut W, object: &C) -> Result<(), SerdeError>
where
    W: Write,
    C: Serialize + ?Sized,
{
    to_writer(writer, object)
}

pub fn get_config_dir(name: &str) -> PathBuf {
    get_root_dir(name, Some("config"))
}

pub fn get_main_config(name: &str) -> PathBuf {
    get_root_dir::<String>(name, None).join("config.json")
}