pub mod adapter;
pub mod provider;
pub use adapter::VcsStorageBackend;
pub use provider::{ObjectMetadata, VcsProvider, VcsProviderConfig};
use super::StorageError;
pub async fn create_vcs_provider(
config: VcsProviderConfig,
) -> Result<Box<dyn VcsProvider>, StorageError> {
Err(StorageError::ConnectionError(format!(
"Unknown or disabled VCS provider: '{}'. \
Provider implementations are available in briefcase-ai-enterprise.",
config.provider_type
)))
}
pub async fn create_vcs_backend(
config: VcsProviderConfig,
) -> Result<VcsStorageBackend<Box<dyn VcsProvider>>, StorageError> {
let provider = create_vcs_provider(config).await?;
Ok(VcsStorageBackend::new(provider))
}
pub async fn create_vcs_backend_from_env(
provider_type: &str,
) -> Result<VcsStorageBackend<Box<dyn VcsProvider>>, StorageError> {
let config = VcsProviderConfig::from_env(provider_type);
create_vcs_backend(config).await
}
pub fn available_providers() -> Vec<&'static str> {
Vec::new()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_available_providers_returns_list() {
let providers = available_providers();
assert!(providers.is_empty());
}
#[tokio::test]
async fn test_unknown_provider_returns_error() {
let config = VcsProviderConfig::new("nonexistent_vcs");
let result = create_vcs_provider(config).await;
assert!(result.is_err());
let err = result.unwrap_err();
assert!(matches!(err, StorageError::ConnectionError(_)));
}
}