aquinas 0.0.13

A simple command line media player. (Like cmus, but simpler.)
use crate::*;
use serde_derive::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
pub struct Config {
  pub scan_depth_limit: usize,
}

impl ::std::default::Default for Config {
  fn default() -> Self {
    Self {
      scan_depth_limit: 12,
    }
  }
}

impl Config {
  fn config_dir() -> Result<PathBuf> {
    Meta::config_dir()
  }

  pub fn save(&self) -> Result<()> {
    let config_dir = Self::config_dir()?;
    let _ = std::fs::create_dir_all(&config_dir);
    let _ = std::fs::write(config_dir.join("config.toml"), toml::to_string(self)?);

    Ok(())
  }

  pub fn load() -> Result<Self> {
    let config_dir = Self::config_dir()?;
    let serialized = std::fs::read_to_string(config_dir.join("config.toml"))?;
    Ok(toml::from_str(&serialized)?)
  }
}