Skip to main content

steer_core/utils/
session.rs

1use std::collections::HashMap;
2
3use crate::error::{Error, Result};
4
5pub fn create_session_store_path() -> Result<std::path::PathBuf> {
6    let home_dir = dirs::home_dir()
7        .ok_or_else(|| Error::Configuration("Could not determine home directory".to_string()))?;
8    let db_path = home_dir.join(".steer").join("sessions.db");
9    Ok(db_path)
10}
11
12pub fn parse_metadata(metadata_str: Option<&str>) -> Result<HashMap<String, String>> {
13    let mut metadata = HashMap::new();
14
15    if let Some(meta_str) = metadata_str {
16        for pair in meta_str.split(',') {
17            let parts: Vec<&str> = pair.split('=').collect();
18            if parts.len() != 2 {
19                return Err(Error::Configuration(
20                    "Invalid metadata format. Expected key=value pairs separated by commas"
21                        .to_string(),
22                ));
23            }
24            metadata.insert(parts[0].trim().to_string(), parts[1].trim().to_string());
25        }
26    }
27
28    Ok(metadata)
29}