Skip to main content

dbx_tools_databricks_auth/storage/
mod.rs

1use 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}