memplace 0.1.0

command and snippet manager
use directories::ProjectDirs;
use std::fs;
use std::path::PathBuf;

pub fn get_database_path() -> PathBuf {
    // Looks for standard paths:
    // Linux:   /home/alice/.local/share/memplace/memplace.json
    // Windows: C:\Users\Alice\AppData\Roaming\memplace\memplace\data\memplace.json
    // Mac:     /Users/Alice/Library/Application Support/rs.memplace.memplace/memplace.json
    if let Some(proj_dirs) = ProjectDirs::from("rs", "memplace", "memplace") {
        let data_dir = proj_dirs.data_dir();

        // Create the folder if it's missing
        if !data_dir.exists() {
            fs::create_dir_all(data_dir).expect("Could not create data directory");
        }

        return data_dir.join("memplace.json");
    }

    // Fallback just in case
    PathBuf::from("memplace.json")
}