Skip to content

Commit e5caa82

Browse files
committed
rewrite extract_curl_version again
1 parent 69ca95b commit e5caa82

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

src/bootstrap/src/core/download.rs

+9-14
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,18 @@ fn try_run(config: &Config, cmd: &mut Command) -> Result<(), ()> {
2121
config.try_run(cmd)
2222
}
2323

24-
fn extract_curl_version(out: &[u8]) -> (u16, u16) {
25-
let out = &out[5..];
26-
let Some(i) = out.iter().position(|&x| x == b' ') else { return (0, 0) };
27-
let out = &out[..i];
28-
let Some(k) = out.iter().rev().position(|&x| x == b'.') else { return (0, 0) };
29-
let out = &out[..out.len() - k - 1];
30-
let Ok(s) = std::str::from_utf8(out) else { return (0, 0) };
31-
let parts = s.split('.').collect::<Vec<_>>();
32-
let [s_major, s_minor] = &parts[..] else { return (0, 0) };
33-
let (Ok(major), Ok(minor)) = (s_major.parse(), s_minor.parse()) else { return (0, 0) };
34-
(major, minor)
24+
fn extract_curl_version(out: &[u8]) -> semver::Version {
25+
let out = String::from_utf8_lossy(out);
26+
// The output should look like this: "curl <major>.<minor>.<patch> ..."
27+
out.lines().next().and_then(|line| line.split(" ").skip(1).next())
28+
.and_then(|version| semver::Version::parse(version).ok())
29+
.unwrap_or(semver::Version::new(1, 0, 0))
3530
}
3631

37-
fn curl_version() -> (u16, u16) {
32+
fn curl_version() -> semver::Version {
3833
let mut curl = Command::new("curl");
3934
curl.arg("-V");
40-
let Ok(out) = curl.output() else { return (0, 0) };
35+
let Ok(out) = curl.output() else { return semver::Version::new(1, 0, 0) };
4136
let out = out.stdout;
4237
extract_curl_version(&out)
4338
}
@@ -253,7 +248,7 @@ impl Config {
253248
curl.arg("--progress-bar");
254249
}
255250
// --retry-all-errors was added in 7.71.0, don't use it if curl is old.
256-
if curl_version() > (7, 70) {
251+
if curl_version() >= semver::Version::new(7, 71, 0) {
257252
curl.arg("--retry-all-errors");
258253
}
259254
curl.arg(url);

0 commit comments

Comments
 (0)