misc
- reduce github calls - latest_tag returns full tag - rev_to_int default to 0 on strip_prefix - lint
This commit is contained in:
parent
a41375a791
commit
ffa379e6dd
@ -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 {
|
||||||
|
24
src/iw4x.rs
24
src/iw4x.rs
@ -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,15 +17,14 @@ 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();
|
||||||
|
let local = local_revision(dir);
|
||||||
|
|
||||||
|
if remote <= local && dir.join("iw4x.dll").exists() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
println!("Updating IW4x...");
|
println!("Updating IW4x...");
|
||||||
http::download_file(
|
http::download_file(
|
||||||
&format!(
|
&format!(
|
||||||
@ -34,10 +33,5 @@ pub fn update(dir: &Path) {
|
|||||||
),
|
),
|
||||||
&dir.join("iw4x.dll"),
|
&dir.join("iw4x.dll"),
|
||||||
);
|
);
|
||||||
fs::write(
|
fs::write(dir.join(".iw4xrevision"), format!("r{}", remote)).unwrap();
|
||||||
dir.join(".iw4xrevision"),
|
|
||||||
github::latest_tag(GH_IW4X_OWNER, GH_IW4X_REPO),
|
|
||||||
)
|
|
||||||
.unwrap();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user