use crate::{
config::{config_filename, PROJECT_DIRS},
data::*,
utils::*,
};
use cursive::{
traits::*,
views::{Dialog, EditView},
Cursive,
};
pub fn get_config(s: &mut Cursive) {
s.add_layer(
Dialog::around(
EditView::new()
.on_submit(|s: &mut Cursive, data_dir: &str| {
s.pop_layer();
std::fs::create_dir_all(data_dir).unwrap(); s.user_data::<UserData>().unwrap().config.data_dir = data_dir.to_owned();
})
.with_name("directory")
.fixed_width(30),
)
.title("Specify the directory to store data"),
);
}
pub fn save_config(s: &mut Cursive) -> Result<(), BoxedError> {
let config = &s.user_data::<UserData>().unwrap().config;
let config = serde_yaml::to_string(config)?; std::fs::create_dir_all(PROJECT_DIRS.config_dir())?;
std::fs::write(config_filename(), &config)?;
Ok(())
}