mrdocument 0.5.3

Automatic PDF transcription and classification via OpenAI
Documentation
use crate::error::{Error, Result};
use crate::profile::Profile;
use once_cell::sync::OnceCell;
use std::env;

static OPENAI_API_KEY: OnceCell<String> = OnceCell::new();

pub fn init() -> Result<()> {
    let config_dir = Profile::get_config_dir()?;
    OPENAI_API_KEY
        .set(
            env::var("OPENAI_API_KEY")
                .map(|key| key.to_string())
                .or_else(|_: env::VarError| {
                    let key = std::fs::read_to_string(config_dir.join("openai-api-key"))?;
                    Ok(key.trim_end_matches("\n").to_string())
                })
                .map_err(|_: Error| Error::NoApiKeyError)?,
        )
        .unwrap();

    Ok(())
}

pub fn get() -> &'static String {
    OPENAI_API_KEY.get().unwrap()
}