dbx_tools_databricks_auth/storage/
mod.rs1use crate::{Error, Result};
2pub use dbx_tools_auth::{CredentialStore, FileStore, MemoryStore, StorageLock, StoreBackend};
3use directories::UserDirs;
4use std::{path::PathBuf, sync::Arc};
5
6#[derive(Clone, Debug, Default)]
7pub struct StoreOptions {
8 pub backend: Option<StoreBackend>,
9 pub cache_dir: Option<PathBuf>,
10}
11
12pub async fn open_store(options: StoreOptions) -> Result<Arc<dyn CredentialStore>> {
13 let directory = match options.cache_dir {
14 Some(directory) => directory,
15 None => default_cache_dir()?,
16 };
17 let backend = options.backend.unwrap_or_default();
18 dbx_tools_auth::open_store(backend, directory, dbx_tools_auth::FileLayout::Single).await
19}
20
21fn default_cache_dir() -> Result<PathBuf> {
22 UserDirs::new()
23 .map(|dirs| dirs.home_dir().join(".databricks"))
24 .ok_or_else(|| Error::Config("could not resolve the user home directory".into()))
25}