use anyhow::{Context, Result};
use secretenv_core::{BackendRegistry, Config};
pub fn build_registry(config: &Config) -> Result<BackendRegistry> {
let mut registry = BackendRegistry::new();
registry.register_factory(Box::new(secretenv_backend_local::LocalFactory::new()));
registry.register_factory(Box::new(secretenv_backend_aws_ssm::AwsSsmFactory::new()));
registry.register_factory(Box::new(secretenv_backend_1password::OnePasswordFactory::new()));
registry.register_factory(Box::new(secretenv_backend_vault::VaultFactory::new()));
registry.register_factory(Box::new(secretenv_backend_aws_secrets::AwsSecretsFactory::new()));
registry.register_factory(Box::new(secretenv_backend_gcp::GcpFactory::new()));
registry.register_factory(Box::new(secretenv_backend_azure::AzureFactory::new()));
registry.register_factory(Box::new(secretenv_backend_keychain::KeychainFactory::new()));
registry.register_factory(Box::new(secretenv_backend_doppler::DopplerFactory::new()));
registry.register_factory(Box::new(secretenv_backend_infisical::InfisicalFactory::new()));
registry.register_factory(Box::new(secretenv_backend_keeper::KeeperFactory::new()));
registry.register_factory(Box::new(secretenv_backend_cf_kv::CfKvFactory::new()));
registry.register_factory(Box::new(secretenv_backend_openbao::OpenBaoFactory::new()));
registry.register_factory(Box::new(secretenv_backend_conjur::ConjurFactory::new()));
registry.register_factory(Box::new(secretenv_backend_bitwarden_sm::BitwardenSmFactory::new()));
registry.load_from_config(config).context("loading backend instances from config.toml")?;
Ok(registry)
}