- reduce github calls
- latest_tag returns full tag
- rev_to_int default to 0 on strip_prefix
- lint
This commit is contained in:
mxve 2023-08-30 13:06:49 +02:00
parent a41375a791
commit ffa379e6dd
5 changed files with 28 additions and 29 deletions

View File

@ -9,13 +9,12 @@ pub fn latest_tag(owner: &str, repo: &str) -> String {
.as_str(), .as_str(),
); );
let github_json: serde_json::Value = serde_json::from_str(&github_body).unwrap(); let github_json: serde_json::Value = serde_json::from_str(&github_body).unwrap();
github_json["tag_name"] github_json["tag_name"].to_string().replace('"', "")
.to_string()
.replace(['v', '"'].as_ref(), "")
} }
pub fn latest_version(owner: &str, repo: &str) -> Version { pub fn latest_version(owner: &str, repo: &str) -> Version {
Version::parse(&latest_tag(owner, repo)).unwrap() let tag = latest_tag(owner, repo).replace('v', "");
Version::parse(&tag).unwrap()
} }
pub fn latest_release_url(owner: &str, repo: &str) -> String { pub fn latest_release_url(owner: &str, repo: &str) -> String {

View File

@ -1,7 +1,7 @@
use crate::github; use crate::github;
use crate::global::*;
use crate::http; use crate::http;
use crate::misc; use crate::misc;
use crate::global::*;
use std::{fs, path::Path}; use std::{fs, path::Path};
@ -17,27 +17,21 @@ pub fn remote_revision() -> u16 {
misc::rev_to_int(&github::latest_tag(GH_IW4X_OWNER, GH_IW4X_REPO)) misc::rev_to_int(&github::latest_tag(GH_IW4X_OWNER, GH_IW4X_REPO))
} }
pub fn update_available(dir: &Path) -> bool {
if !dir.join("iw4x.dll").exists() {
return true;
}
local_revision(dir) < remote_revision()
}
pub fn update(dir: &Path) { pub fn update(dir: &Path) {
if update_available(dir) { let remote = remote_revision();
println!("Updating IW4x..."); let local = local_revision(dir);
http::download_file(
&format!( if remote <= local && dir.join("iw4x.dll").exists() {
"{}/download/iw4x.dll", return;
github::latest_release_url(GH_IW4X_OWNER, GH_IW4X_REPO)
),
&dir.join("iw4x.dll"),
);
fs::write(
dir.join(".iw4xrevision"),
github::latest_tag(GH_IW4X_OWNER, GH_IW4X_REPO),
)
.unwrap();
} }
println!("Updating IW4x...");
http::download_file(
&format!(
"{}/download/iw4x.dll",
github::latest_release_url(GH_IW4X_OWNER, GH_IW4X_REPO)
),
&dir.join("iw4x.dll"),
);
fs::write(dir.join(".iw4xrevision"), format!("r{}", remote)).unwrap();
} }

View File

@ -13,5 +13,8 @@ pub fn stdin() -> String {
} }
pub fn rev_to_int(rev: &str) -> u16 { pub fn rev_to_int(rev: &str) -> u16 {
rev.strip_prefix('r').unwrap().parse::<u16>().unwrap_or(0) rev.strip_prefix('r')
.unwrap_or("0")
.parse::<u16>()
.unwrap_or(0)
} }

View File

@ -16,7 +16,10 @@ pub fn self_update_available() -> bool {
pub fn run(_update_only: bool) { pub fn run(_update_only: bool) {
if self_update_available() { if self_update_available() {
println!("A new version of the AlterWare launcher is available."); println!("A new version of the AlterWare launcher is available.");
println!("Download it at {}", github::latest_release_url(GH_OWNER, GH_REPO)); println!(
"Download it at {}",
github::latest_release_url(GH_OWNER, GH_REPO)
);
println!("Launching in 10 seconds.."); println!("Launching in 10 seconds..");
thread::sleep(time::Duration::from_secs(10)); thread::sleep(time::Duration::from_secs(10));
} }