37 lines
1.1 KiB
Rust
37 lines
1.1 KiB
Rust
use std::path::PathBuf;
|
|||
|
|
use serde::{Deserialize, Serialize};
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||
|
|
pub struct Store {
|
||
|
|
pub base_dir: PathBuf,
|
||
|
|
pub scratch_root: PathBuf,
|
||
|
|
pub memory_dir: PathBuf,
|
||
|
|
pub session_images_dir: PathBuf,
|
||
|
|
pub download_dir: PathBuf,
|
||
|
|
}
|
||
|
|
|
||
|
|
impl Store {
|
||
|
|
pub fn new() -> Self {
|
||
|
|
let base = dirs::data_dir()
|
||
|
|
.unwrap_or_else(|| PathBuf::from(".local/share"))
|
||
|
|
.join("zesdex");
|
||
|
|
let scratch = std::env::temp_dir().join("zesdex-scratch");
|
||
|
|
Store {
|
||
|
|
memory_dir: base.join("memory"),
|
||
|
|
scratch_root: scratch,
|
||
|
|
session_images_dir: base.join("session-images"),
|
||
|
|
download_dir: base.join("downloads"),
|
||
|
|
base_dir: base,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn ensure_dirs(&self) -> std::io::Result<()> {
|
||
|
|
std::fs::create_dir_all(&self.base_dir)?;
|
||
|
|
std::fs::create_dir_all(&self.memory_dir)?;
|
||
|
|
std::fs::create_dir_all(&self.scratch_root)?;
|
||
|
|
std::fs::create_dir_all(&self.session_images_dir)?;
|
||
|
|
std::fs::create_dir_all(&self.download_dir)?;
|
||
|
|
Ok(())
|
||
|
|
}
|
||
|
|
}
|