Fix outdated launcher check
This commit is contained in:
parent
e4ef3d0c66
commit
e949ff445e
2 changed files with 22 additions and 7 deletions
|
@ -1,4 +1,4 @@
|
||||||
use crate::{api, Data};
|
use crate::{api, utils::semver_split, Data};
|
||||||
|
|
||||||
use std::sync::OnceLock;
|
use std::sync::OnceLock;
|
||||||
|
|
||||||
|
@ -185,15 +185,17 @@ fn optinotfine(log: &str) -> Issue {
|
||||||
|
|
||||||
async fn outdated_launcher(log: &str, data: &Data) -> Result<Issue> {
|
async fn outdated_launcher(log: &str, data: &Data) -> Result<Issue> {
|
||||||
static OUTDATED_LAUNCHER_REGEX: OnceLock<Regex> = OnceLock::new();
|
static OUTDATED_LAUNCHER_REGEX: OnceLock<Regex> = OnceLock::new();
|
||||||
let outdated_launcher = OUTDATED_LAUNCHER_REGEX
|
let outdated_launcher = OUTDATED_LAUNCHER_REGEX.get_or_init(|| {
|
||||||
.get_or_init(|| Regex::new("Prism Launcher version: [0-9].[0-9].[0-9]").unwrap());
|
Regex::new("Prism Launcher version: ((?:([0-9]+)\\.)?([0-9]+)\\.([0-9]+))").unwrap()
|
||||||
|
});
|
||||||
|
|
||||||
let Some(captures) = outdated_launcher.captures(log) else {
|
let Some(captures) = outdated_launcher.captures(log) else {
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
};
|
};
|
||||||
|
|
||||||
let octocrab = &data.octocrab;
|
let octocrab = &data.octocrab;
|
||||||
let version_from_log = captures[0].replace("Prism Launcher version: ", "");
|
let log_version = &captures[1];
|
||||||
|
let log_version_parts = semver_split(&log_version);
|
||||||
|
|
||||||
let latest_version = if let Some(storage) = &data.storage {
|
let latest_version = if let Some(storage) = &data.storage {
|
||||||
if let Ok(version) = storage.launcher_version().await {
|
if let Ok(version) = storage.launcher_version().await {
|
||||||
|
@ -207,11 +209,16 @@ async fn outdated_launcher(log: &str, data: &Data) -> Result<Issue> {
|
||||||
trace!("Not caching launcher version, as we're running without a storage backend");
|
trace!("Not caching launcher version, as we're running without a storage backend");
|
||||||
api::github::get_latest_prism_version(octocrab).await?
|
api::github::get_latest_prism_version(octocrab).await?
|
||||||
};
|
};
|
||||||
|
let latest_version_parts = semver_split(&latest_version);
|
||||||
|
|
||||||
if version_from_log < latest_version {
|
if log_version_parts.len() != 2
|
||||||
|
|| log_version_parts[0] < latest_version_parts[0]
|
||||||
|
|| (log_version_parts[0] == latest_version_parts[0]
|
||||||
|
&& log_version_parts[1] < latest_version_parts[1])
|
||||||
|
{
|
||||||
let issue = (
|
let issue = (
|
||||||
"Outdated Prism Launcher".to_string(),
|
"Outdated Prism Launcher".to_string(),
|
||||||
format!("Your installed version is {version_from_log}, while the newest version is {latest_version}.\nPlease update, for more info see https://prismlauncher.org/download/")
|
format!("Your installed version is {log_version}, while the newest version is {latest_version}.\nPlease update; for more info see https://prismlauncher.org/download/")
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(Some(issue))
|
Ok(Some(issue))
|
||||||
|
|
|
@ -8,3 +8,11 @@ pub fn embed_author_from_user(user: &User) -> CreateEmbedAuthor {
|
||||||
.unwrap_or_else(|| user.default_avatar_url()),
|
.unwrap_or_else(|| user.default_avatar_url()),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn semver_split(version: &str) -> Vec<u32> {
|
||||||
|
version
|
||||||
|
.split('.')
|
||||||
|
.map(|s| s.parse().ok())
|
||||||
|
.flatten()
|
||||||
|
.collect::<Vec<u32>>()
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue