aquinas 0.0.15

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

#[derive(Deserialize, Serialize, Default)]
pub struct Meta {
  pub last_path: Option<PathBuf>,
}

impl Meta {
  pub fn config_dir() -> Result<PathBuf> {
    let config_dir = dirs::data_local_dir()
      .expect("Cannot save meta info")
      .join("aquinas");

    Ok(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("meta.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("meta.toml"))?;
    Ok(toml::from_str(&serialized)?)
  }
}