Skip to content

Commit 7b5e598

Browse files
committed
use reqwest as build dep too
Instead of ureq, we'll just use reqwest with blocking feature enabled for the new build script.
1 parent f2507e4 commit 7b5e598

4 files changed

Lines changed: 28 additions & 57 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,3 +347,4 @@ cpp-linter-py/docs/cli_args.rst
347347
lcov.info
348348
coverage.json
349349
.config/ReleaseNotes.md
350+
versions.json

Cargo.lock

Lines changed: 2 additions & 46 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

clang-installer/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ bin = ["dep:clap", "dep:tokio", "dep:anyhow", "dep:colored"]
5050
[build-dependencies]
5151
serde = { workspace = true }
5252
serde_json = { workspace = true }
53-
ureq = { version = "3.3.0", default-features = false, features = ["rustls"] }
53+
reqwest = { workspace = true, features = ["default-tls", "blocking"] }
5454

5555
[package.metadata.binstall]
5656
pkg-url = "{ repo }/releases/download/clang-installer/v{ version }/{ name }-{ target }{ archive-suffix }"

clang-installer/build.rs

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
1+
use std::{fs, path::PathBuf};
2+
3+
use reqwest::blocking::ClientBuilder;
4+
15
const URL: &str = "https://github.com/cpp-linter/clang-tools-static-binaries/releases/latest/download/versions.json";
26

37
#[derive(Debug, serde::Deserialize)]
48
struct VersionInfo {
59
release_tag: String,
610
llvm_versions: std::collections::HashMap<u8, String>,
711
}
8-
912
fn main() {
10-
let mut response = ureq::get(URL)
11-
.call()
12-
.unwrap();
13-
let body = response.body_mut();
14-
let body_str = body
15-
.read_to_string()
16-
.unwrap();
17-
let version_info: VersionInfo = serde_json::from_str(&body_str).unwrap();
13+
let pre_seed = PathBuf::from("versions.json");
14+
let version_info_str = if pre_seed.exists() {
15+
println!("cargo:warning=Using pre-seeded version info from {pre_seed:?}");
16+
fs::read_to_string(&pre_seed).unwrap()
17+
} else {
18+
ClientBuilder::new()
19+
.user_agent("cpp-linter-rs/clang-installer")
20+
.build()
21+
.unwrap()
22+
.get(URL)
23+
.send()
24+
.unwrap()
25+
.text()
26+
.unwrap()
27+
};
28+
let version_info: VersionInfo = serde_json::from_str(&version_info_str).unwrap();
1829
let (min_ver, max_ver) = {
1930
let (mut min_v, mut max_v) = (None, None);
2031
for ver in version_info.llvm_versions.keys() {
@@ -27,7 +38,10 @@ fn main() {
2738
}
2839
(min_v.unwrap(), max_v.unwrap())
2940
};
30-
println!("cargo:rustc-env=CLANG_TOOLS_TAG={}", version_info.release_tag);
41+
println!(
42+
"cargo:rustc-env=CLANG_TOOLS_TAG={}",
43+
version_info.release_tag
44+
);
3145
println!("cargo:rustc-env=MIN_CLANG_TOOLS_VERSION={min_ver}");
3246
println!("cargo:rustc-env=MAX_CLANG_TOOLS_VERSION={max_ver}");
3347
}

0 commit comments

Comments
 (0)