1use std::ffi::OsStr;
2use std::fs::File;
3use std::path::Path;
4
5use serde_json::Value;
6
7use super::Result;
8
9pub fn save_settings(value: &Value, path: &str) -> Result<()> {
10 let p = match path.is_empty() {
11 true => Path::new("./settings.json"),
12 false => Path::new(path),
13 };
14 if p.extension() != Some(OsStr::new("json")) {
15 bail!("save settings failed as {:?} is not json file", p);
16 }
17
18 let file = File::create(p)?;
19 serde_json::to_writer_pretty(file, value)?;
20 Ok(())
21}
22
23pub fn get_settings(path: &str) -> Result<Value> {
24 let path = match path.is_empty() {
25 true => "./settings.json",
26 false => path,
27 };
28 let file = File::open(Path::new(path))?;
29 let settings = serde_json::from_reader(file)?;
30 Ok(settings)
31}