Oops
parent
44778f91c3
commit
57b351403e
53
src/lib.rs
53
src/lib.rs
|
|
@ -80,6 +80,54 @@ impl ModInfo {
|
||||||
pub fn version_string(&self) -> String {
|
pub fn version_string(&self) -> String {
|
||||||
format!("{}.{}.{}", self.version.0, self.version.1, self.version.2)
|
format!("{}.{}.{}", self.version.0, self.version.1, self.version.2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Does the mod satisfy a dependency string?
|
||||||
|
pub fn satisfies(&self, dependency_string: &str) -> bool {
|
||||||
|
let version_str_index = match dependency_string.rfind('-') {
|
||||||
|
Some(index) => index,
|
||||||
|
None => return false,
|
||||||
|
};
|
||||||
|
if &dependency_string[0..version_str_index] != format!("{}-{}", self.author, self.name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let version_string = &dependency_string[version_str_index + 1..];
|
||||||
|
let mut iter = version_string.split('.');
|
||||||
|
let major = iter
|
||||||
|
.next()
|
||||||
|
.and_then(|str| i64::from_str_radix(str, 10).ok());
|
||||||
|
let minor = iter
|
||||||
|
.next()
|
||||||
|
.and_then(|str| i64::from_str_radix(str, 10).ok());
|
||||||
|
let patch = iter
|
||||||
|
.next()
|
||||||
|
.and_then(|str| i64::from_str_radix(str, 10).ok());
|
||||||
|
if iter.count() > 0 {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
let version = match (major, minor, patch) {
|
||||||
|
(Some(major), Some(minor), Some(patch)) => (major, minor, patch),
|
||||||
|
_ => return false,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Mods probably don't follow semantic versioning that closely, so just assume that bigger
|
||||||
|
// is better.
|
||||||
|
match self.version.0.cmp(&version.0) {
|
||||||
|
Greater => return true,
|
||||||
|
Less => return false,
|
||||||
|
Equal => (),
|
||||||
|
};
|
||||||
|
match self.version.1.cmp(&version.1) {
|
||||||
|
Greater => return true,
|
||||||
|
Less => return false,
|
||||||
|
Equal => (),
|
||||||
|
};
|
||||||
|
match self.version.2.cmp(&version.2) {
|
||||||
|
Greater => true,
|
||||||
|
Less => false,
|
||||||
|
Equal => true,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct FetchExtractor {
|
pub struct FetchExtractor {
|
||||||
|
|
@ -226,7 +274,8 @@ pub fn data_dir() -> PathBuf {
|
||||||
pub fn game_dir() -> PathBuf {
|
pub fn game_dir() -> PathBuf {
|
||||||
match var("GAME_DIR").ok() {
|
match var("GAME_DIR").ok() {
|
||||||
Some(game_dir) => game_dir.into(),
|
Some(game_dir) => game_dir.into(),
|
||||||
None => PathBuf::from(var("HOME").unwrap())
|
None => {
|
||||||
.join("steam/SteamLibrary/steamapps/common/Lethal Company"),
|
PathBuf::from(var("HOME").unwrap()).join(".steam/steam/steamapps/common/Lethal Company")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue