Skip to main content

kellnr_storage/
lib.rs

1pub mod cached_crate_storage;
2pub mod cratesio_crate_storage;
3pub mod docs_storage;
4pub mod fs_storage;
5pub mod gcs_storage;
6pub mod kellnr_crate_storage;
7pub mod s3_storage;
8pub mod storage;
9pub mod storage_error;
10pub mod toolchain_storage;
11
12use kellnr_settings::Settings;
13
14use crate::cached_crate_storage::DynStorage;
15use crate::fs_storage::FSStorage;
16use crate::gcs_storage::GCSStorage;
17use crate::s3_storage::S3Storage;
18use crate::storage_error::StorageError;
19
20/// The configured storage backend for `folder`, which is the bucket name for
21/// S3 and GCS.
22pub fn init_storage(folder: &str, settings: &Settings) -> Result<DynStorage, StorageError> {
23    Ok(if settings.s3.enabled {
24        Box::new(S3Storage::try_from((folder, settings))?)
25    } else if settings.gcs.enabled {
26        Box::new(GCSStorage::try_from((folder, settings))?)
27    } else {
28        Box::new(FSStorage::new(folder)?)
29    })
30}