init: Check all releases (#21417)
This commit is contained in:
parent
755221bac4
commit
69e1b68fbb
|
@ -859,39 +859,54 @@ fn check_for_newer_github_release(
|
||||||
version_filter: Option<semver::VersionReq>,
|
version_filter: Option<semver::VersionReq>,
|
||||||
prerelease_allowed: bool,
|
prerelease_allowed: bool,
|
||||||
) -> reqwest::Result<Option<String>> {
|
) -> reqwest::Result<Option<String>> {
|
||||||
let url =
|
let mut page = 1;
|
||||||
reqwest::Url::parse("https://api.github.com/repos/solana-labs/solana/releases").unwrap();
|
const PER_PAGE: usize = 100;
|
||||||
let client = reqwest::blocking::Client::builder()
|
let client = reqwest::blocking::Client::builder()
|
||||||
.user_agent("solana-install")
|
.user_agent("solana-install")
|
||||||
.build()?;
|
.build()?;
|
||||||
let request = client.get(url).build()?;
|
let mut all_releases = vec![];
|
||||||
let response = client.execute(request)?;
|
let mut releases = vec![];
|
||||||
|
|
||||||
let mut releases = response
|
while page == 1 || releases.len() == PER_PAGE {
|
||||||
.json::<GithubReleases>()?
|
let url = reqwest::Url::parse_with_params(
|
||||||
.0
|
"https://api.github.com/repos/solana-labs/solana/releases",
|
||||||
.into_iter()
|
&[
|
||||||
.filter_map(
|
("per_page", &format!("{}", PER_PAGE)),
|
||||||
|GithubRelease {
|
("page", &format!("{}", page)),
|
||||||
tag_name,
|
],
|
||||||
prerelease,
|
|
||||||
}| {
|
|
||||||
if let Ok(version) = semver_of(&tag_name) {
|
|
||||||
if (prerelease_allowed || !prerelease)
|
|
||||||
&& version_filter
|
|
||||||
.as_ref()
|
|
||||||
.map_or(true, |version_filter| version_filter.matches(&version))
|
|
||||||
{
|
|
||||||
return Some(version);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
.collect::<Vec<_>>();
|
.unwrap();
|
||||||
|
let request = client.get(url).build()?;
|
||||||
|
let response = client.execute(request)?;
|
||||||
|
|
||||||
releases.sort();
|
releases = response
|
||||||
Ok(releases.pop().map(|r| r.to_string()))
|
.json::<GithubReleases>()?
|
||||||
|
.0
|
||||||
|
.into_iter()
|
||||||
|
.filter_map(
|
||||||
|
|GithubRelease {
|
||||||
|
tag_name,
|
||||||
|
prerelease,
|
||||||
|
}| {
|
||||||
|
if let Ok(version) = semver_of(&tag_name) {
|
||||||
|
if (prerelease_allowed || !prerelease)
|
||||||
|
&& version_filter
|
||||||
|
.as_ref()
|
||||||
|
.map_or(true, |version_filter| version_filter.matches(&version))
|
||||||
|
{
|
||||||
|
return Some(version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
all_releases.extend_from_slice(&releases);
|
||||||
|
page += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
all_releases.sort();
|
||||||
|
Ok(all_releases.pop().map(|r| r.to_string()))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum SemverUpdateType {
|
pub enum SemverUpdateType {
|
||||||
|
|
Loading…
Reference in New Issue