mod cli; pub use cli::{ exec, get, parser, invoke_shortcut, }; pub(crate) use platform::connect; pub use platform::server_addr; mod proto; #[cfg(unix)] mod platform { use std::path::PathBuf; use tokio::net::UnixStream; pub async fn connect(addr: Option) -> Result { let path = addr.unwrap_or_else(|| server_addr("creddy-server")); UnixStream::connect(&path).await } pub fn server_addr(sock_name: &str) -> PathBuf { let mut path = dirs::runtime_dir() .unwrap_or_else(|| PathBuf::from("/tmp")); path.push(format!("{sock_name}.sock")); path } } #[cfg(windows)] mod platform { pub fn server_addr(sock_name: &str) -> String { format!(r"\\.\pipe\{sock_name}") } }