You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2023/03/21 13:46:37 UTC
[incubator-opendal] branch main updated: feat: make oli support more services (#1717)
This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 74bd0bb4 feat: make oli support more services (#1717)
74bd0bb4 is described below
commit 74bd0bb4d31ce80e7516192faf2754b11f8af62f
Author: Jian Zeng <an...@gmail.com>
AuthorDate: Tue Mar 21 21:46:31 2023 +0800
feat: make oli support more services (#1717)
Signed-off-by: Jian Zeng <an...@gmail.com>
---
bin/oli/Cargo.toml | 20 +++++++++++
bin/oli/src/config/mod.rs | 86 +++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 104 insertions(+), 2 deletions(-)
diff --git a/bin/oli/Cargo.toml b/bin/oli/Cargo.toml
index 14888c18..6cc20ce7 100644
--- a/bin/oli/Cargo.toml
+++ b/bin/oli/Cargo.toml
@@ -27,6 +27,26 @@ name = "oli"
repository = "https://github.com/apache/incubator-opendal"
version = "0.30.3"
+[features]
+# Enable services dashmap support
+services-dashmap = ["opendal/services-dashmap"]
+# Enable services ftp support
+services-ftp = ["opendal/services-ftp"]
+# Enable services hdfs support
+services-hdfs = ["opendal/services-hdfs"]
+# Enable services ipfs support
+services-ipfs = ["opendal/services-ipfs"]
+# Enable services memcached support
+services-memcached = ["opendal/services-memcached"]
+# Enable services moka support
+services-moka = ["opendal/services-moka"]
+# Enable services redis support
+services-redis = ["opendal/services-redis"]
+# Enable services rocksdb support
+services-rocksdb = ["opendal/services-rocksdb"]
+# Enable services sled support
+services-sled = ["opendal/services-sled"]
+
[dependencies]
anyhow = "1"
clap = { version = "4", features = ["cargo", "string"] }
diff --git a/bin/oli/src/config/mod.rs b/bin/oli/src/config/mod.rs
index ce41ba7e..e35848e6 100644
--- a/bin/oli/src/config/mod.rs
+++ b/bin/oli/src/config/mod.rs
@@ -85,14 +85,96 @@ impl Config {
.ok_or_else(|| anyhow!("missing 'type' in profile"))?;
let scheme = Scheme::from_str(svc)?;
match scheme {
- Scheme::S3 => Ok((
- Operator::from_map::<services::S3>(profile.clone())?.finish(),
+ Scheme::Azblob => Ok((
+ Operator::from_map::<services::Azblob>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Azdfs => Ok((
+ Operator::from_map::<services::Azdfs>(profile.clone())?.finish(),
+ path,
+ )),
+ #[cfg(feature = "services-dashmap")]
+ Scheme::Dashmap => Ok((
+ Operator::from_map::<services::Dashmap>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Gcs => Ok((
+ Operator::from_map::<services::Gcs>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Ghac => Ok((
+ Operator::from_map::<services::Ghac>(profile.clone())?.finish(),
+ path,
+ )),
+ #[cfg(feature = "services-hdfs")]
+ Scheme::Hdfs => Ok((
+ Operator::from_map::<services::Hdfs>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Http => Ok((
+ Operator::from_map::<services::Http>(profile.clone())?.finish(),
+ path,
+ )),
+ #[cfg(feature = "services-ftp")]
+ Scheme::Ftp => Ok((
+ Operator::from_map::<services::Ftp>(profile.clone())?.finish(),
+ path,
+ )),
+ #[cfg(feature = "services-ipfs")]
+ Scheme::Ipfs => Ok((
+ Operator::from_map::<services::Ipfs>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Ipmfs => Ok((
+ Operator::from_map::<services::Ipmfs>(profile.clone())?.finish(),
+ path,
+ )),
+ #[cfg(feature = "services-memcached")]
+ Scheme::Memcached => Ok((
+ Operator::from_map::<services::Memcached>(profile.clone())?.finish(),
+ path,
+ )),
+ // ignore the memory backend
+ #[cfg(feature = "services-moka")]
+ Scheme::Moka => Ok((
+ Operator::from_map::<services::Moka>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Obs => Ok((
+ Operator::from_map::<services::Obs>(profile.clone())?.finish(),
path,
)),
Scheme::Oss => Ok((
Operator::from_map::<services::Oss>(profile.clone())?.finish(),
path,
)),
+ #[cfg(feature = "services-redis")]
+ Scheme::Redis => Ok((
+ Operator::from_map::<services::Redis>(profile.clone())?.finish(),
+ path,
+ )),
+ #[cfg(feature = "services-rocksdb")]
+ Scheme::Rocksdb => Ok((
+ Operator::from_map::<services::Rocksdb>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::S3 => Ok((
+ Operator::from_map::<services::S3>(profile.clone())?.finish(),
+ path,
+ )),
+ #[cfg(feature = "services-sled")]
+ Scheme::Sled => Ok((
+ Operator::from_map::<services::Sled>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Webdav => Ok((
+ Operator::from_map::<services::Webdav>(profile.clone())?.finish(),
+ path,
+ )),
+ Scheme::Webhdfs => Ok((
+ Operator::from_map::<services::Webhdfs>(profile.clone())?.finish(),
+ path,
+ )),
_ => Err(anyhow!("invalid profile")),
}
}