Проверка версий зависимостей
Добавил проверку версий установленных зависимостей паков.
This commit is contained in:
@@ -132,7 +132,15 @@ ContentPack ContentPack::read(const io::path& folder) {
|
||||
level = DependencyLevel::weak;
|
||||
break;
|
||||
}
|
||||
pack.dependencies.push_back({level, depName});
|
||||
|
||||
std::string depVersion = "*";
|
||||
size_t version_pos = depName.rfind("@");
|
||||
if (version_pos != std::string::npos){
|
||||
depVersion = depName.substr(version_pos + 1);
|
||||
depName = depName.substr(0, version_pos);
|
||||
}
|
||||
|
||||
pack.dependencies.push_back({level, depName, depVersion});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ enum class DependencyLevel {
|
||||
struct DependencyPack {
|
||||
DependencyLevel level;
|
||||
std::string id;
|
||||
std::string verison;
|
||||
};
|
||||
|
||||
struct ContentPackStats {
|
||||
|
||||
@@ -105,6 +105,14 @@ static bool resolve_dependencies(
|
||||
// added
|
||||
continue;
|
||||
}
|
||||
if (dep.verison == "*" || dep.verison == found->second.version){
|
||||
// dependency pack version mets the required one
|
||||
continue;
|
||||
} else {
|
||||
throw contentpack_error(
|
||||
dep.id, io::path(), "does not meet required version '" + dep.verison +"' of '" + pack->id + "'"
|
||||
);
|
||||
}
|
||||
|
||||
if (!util::contains(allNames, dep.id) &&
|
||||
dep.level != DependencyLevel::weak) {
|
||||
|
||||
Reference in New Issue
Block a user