use std::path::PathBuf;
use crate::consts::APP_DIR;
use crate::error::{CliError, Result};
pub fn data_dir() -> Result<PathBuf> {
let base = dirs::data_dir()
.ok_or_else(|| CliError::Validation("could not resolve XDG data_dir".into()))?;
Ok(base.join(APP_DIR))
}
pub fn db_path() -> Result<PathBuf> {
let dir = data_dir()?;
std::fs::create_dir_all(&dir)?;
Ok(dir.join("skills.db"))
}
pub fn default_roots() -> Vec<PathBuf> {
let home = match dirs::home_dir() {
Some(h) => h,
None => return Vec::new(),
};
let candidates = [
home.join(".hermes").join("skills"),
home.join(".claude").join("skills"),
];
candidates
.into_iter()
.filter(|p| p.exists())
.collect()
}