use once_cell::sync::{Lazy, OnceCell}; use parking_lot::RwLock; use std::{sync::Arc}; use platform_dirs::AppDirs; use std::path::PathBuf; #[macro_use] extern crate log; pub mod audio; pub mod commands; pub mod config; pub mod db; #[cfg(feature = "jarvis_app")] pub mod listener; pub mod recorder; #[cfg(feature = "jarvis_app")] pub mod stt; #[cfg(feature = "jarvis_app")] pub mod intent; // shared statics pub static APP_DIR: Lazy = Lazy::new(|| std::env::current_dir().unwrap()); pub static SOUND_DIR: Lazy = Lazy::new(|| APP_DIR.clone().join("sound")); pub static APP_DIRS: OnceCell = OnceCell::new(); pub static APP_CONFIG_DIR: OnceCell = OnceCell::new(); pub static APP_LOG_DIR: OnceCell = OnceCell::new(); pub static DB: OnceCell>> = OnceCell::new(); pub static COMMANDS_LIST: OnceCell> = OnceCell::new(); // re-exports pub use commands::JCommandsList; pub use config::structs::*; pub use db::structs::Settings; // use crate::commands::{JComandsList, JCommand};