runix-cli 1.4.0

A CLI tool for ASCII art in your terminal
use serde::{Deserialize, Serialize};
use std::{fs, path::PathBuf};

#[derive(Serialize, Deserialize, Default)]
pub struct Config {
    pub groq_key: Option<String>,
}

fn config_path() -> PathBuf {
    dirs::home_dir()
        .unwrap()
        .join(".runix")
        .join("config.json")
}

pub fn save_key(key: &str) -> anyhow::Result<()> {
    let path = config_path();

    fs::create_dir_all(path.parent().unwrap())?;

    let config = Config {
        groq_key: Some(key.trim().to_string()),
    };

    fs::write(path, serde_json::to_string_pretty(&config)?)?;

    Ok(())
}

pub fn get_key() -> Option<String> {
    let _ = dotenvy::dotenv().ok();
    if let Ok(key) = std::env::var("GROQ_KEY") {
        if !key.trim().is_empty() {
            return Some(key);
        }
    }


    let path = config_path();

    let data = fs::read_to_string(path).ok()?;
    let config: Config = serde_json::from_str(&data).ok()?;


    config.groq_key
}