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 {
|
||||
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 {
|
||||
|
|
@ -226,7 +274,8 @@ pub fn data_dir() -> PathBuf {
|
|||
pub fn game_dir() -> PathBuf {
|
||||
match var("GAME_DIR").ok() {
|
||||
Some(game_dir) => game_dir.into(),
|
||||
None => PathBuf::from(var("HOME").unwrap())
|
||||
.join("steam/SteamLibrary/steamapps/common/Lethal Company"),
|
||||
None => {
|
||||
PathBuf::from(var("HOME").unwrap()).join(".steam/steam/steamapps/common/Lethal Company")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue