summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBasile Henry2020-10-10 12:36:51 +0200
committerBasile Henry2020-10-10 12:37:07 +0200
commit11ff1d502d5706b92e09a4051f7ffc708859409c (patch)
tree6793f5a549d1f56b36cd2c719a07626e4db5672c
parent3f40ab4625b8ea3e0eeb894d95557f5790c02776 (diff)
Make reqwest an optional dependency
This adds a feature to the Cargo.toml to be able to control if dhall depends on reqwest. This makes it possible to build dhall-rust for any arch (not just wasm32) without depending on reqwest. To disable reqwest as a dependency, we can now use `default-features = false` when adding the dhall dependency. Closes #169
-rw-r--r--dhall/Cargo.toml5
-rw-r--r--dhall/src/semantics/resolve/resolve.rs6
2 files changed, 9 insertions, 2 deletions
diff --git a/dhall/Cargo.toml b/dhall/Cargo.toml
index 6c2c630..72fc13c 100644
--- a/dhall/Cargo.toml
+++ b/dhall/Cargo.toml
@@ -11,6 +11,9 @@ edition = "2018"
build = "build.rs"
include = ["src/**/*", "README.md", "build.rs"]
+[features]
+default = [ "reqwest" ]
+
[[test]]
name = "spec"
harness = false
@@ -33,7 +36,7 @@ url = "2.1"
# Reqwest needs proper async support to work on wasm. So no remote imports on
# wasm for now.
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
-reqwest = { version = "0.10", features = ["blocking"] }
+reqwest = { version = "0.10", features = ["blocking"], optional = true }
[dev-dependencies]
anyhow = "1.0.28"
diff --git a/dhall/src/semantics/resolve/resolve.rs b/dhall/src/semantics/resolve/resolve.rs
index 036e9a0..2b401dc 100644
--- a/dhall/src/semantics/resolve/resolve.rs
+++ b/dhall/src/semantics/resolve/resolve.rs
@@ -197,10 +197,14 @@ fn mkexpr(kind: UnspannedExpr) -> Expr {
}
// TODO: error handling
-#[cfg(not(target_arch = "wasm32"))]
+#[cfg(all(not(target_arch = "wasm32"), feature = "reqwest"))]
pub(crate) fn download_http_text(url: Url) -> Result<String, Error> {
Ok(reqwest::blocking::get(url).unwrap().text().unwrap())
}
+#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
+pub(crate) fn download_http_text(_url: Url) -> Result<String, Error> {
+ panic!("Remote imports are disabled in this build of dhall-rust")
+}
#[cfg(target_arch = "wasm32")]
pub(crate) fn download_http_text(_url: Url) -> Result<String, Error> {
panic!("Remote imports are not supported on wasm yet")