use anyhow::Result;
use std::collections::HashMap;
use std::path::PathBuf;
use super::GitStatus;
pub fn get_cache_path() -> Result<PathBuf> {
let cache_dir = crate::xdg::cache_dir()?;
std::fs::create_dir_all(&cache_dir)?;
Ok(cache_dir.join("git_status_cache.json"))
}
pub fn load_status_cache() -> HashMap<PathBuf, GitStatus> {
if let Ok(path) = get_cache_path()
&& path.exists()
&& let Ok(content) = std::fs::read_to_string(&path)
{
return serde_json::from_str(&content).unwrap_or_default();
}
HashMap::new()
}
pub fn save_status_cache(statuses: &HashMap<PathBuf, GitStatus>) {
if let Ok(path) = get_cache_path()
&& let Ok(content) = serde_json::to_string(statuses)
{
let _ = std::fs::write(path, content);
}
}