1use std::sync::Arc;
6
7use crate::error::Error;
8use crate::error_kind::SECRETS_MANAGER_FAILURE;
9use crate::secrets::bitwarden_secrets_manager::BitwardenSecretsManager;
10use crate::secrets::secrets_manager::SecretsManager;
11
12mod bitwarden_secrets_manager;
13pub mod secrets_manager;
14
15pub fn get_secrets_manager() -> Result<Arc<dyn SecretsManager + Send + Sync>, Error> {
16 let access_token = match std::env::var("SECRETS_MANAGER_ACCESS_TOKEN") {
17 Ok(access_token) => access_token,
18 Err(error) => {
19 return Err(Error::new(
20 SECRETS_MANAGER_FAILURE.to_string(),
21 format!(
22 "failed to retrieve secrets manager access token from environment variable: {}",
23 error
24 ),
25 ))
26 }
27 };
28
29 Ok(Arc::new(BitwardenSecretsManager::new(access_token)))
30}