devbrain 0.1.0

Local-first CLI to capture, search, and recall developer workflow (commands, errors, and fixes)
use crate::error::DevbrainError;
use std::env;
use std::path::PathBuf;

pub const DEFAULT_DB_PATH: &str = "~/.devbrain/db.json";

#[derive(Clone)]
pub struct Config {
    pub db_path: PathBuf,
}

pub fn load_config() -> Result<Config, DevbrainError> {
    if let Ok(path) = env::var("DEVBRAIN_DB_PATH") {
        return Ok(Config {
            db_path: PathBuf::from(path),
        });
    }

    let home = env::var_os("HOME")
        .map(PathBuf::from)
        .ok_or_else(|| DevbrainError::Other("HOME directory not found".to_string()))?;

    let db_path = if let Some(stripped) = DEFAULT_DB_PATH.strip_prefix("~/") {
        home.join(stripped)
    } else {
        PathBuf::from(DEFAULT_DB_PATH)
    };

    Ok(Config { db_path })
}