dependency version operators

а также сделал и вынес Version в ContentPackVersion ну и подправил луа скрипты.
требуются тесты
This commit is contained in:
KotIsOff
2025-08-26 01:52:26 +03:00
parent 5b18639d94
commit 7aa4c33721
7 changed files with 255 additions and 13 deletions
+35 -6
View File
@@ -133,14 +133,43 @@ ContentPack ContentPack::read(const io::path& folder) {
break;
}
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);
std::string depVer = "*";
std::string depVerOperator = "=";
size_t versionPos = depName.rfind("@");
if (versionPos != std::string::npos) {
depVer = depName.substr(versionPos + 1);
depName = depName.substr(0, versionPos);
if (depVer.size() >= 2) {
std::string op = depVer.substr(0, 2);
std::uint8_t op_size = 0;
// Two symbol operators
if (op == ">=" || op == "=>" || op == "<=" || op == "=<") {
op_size = 2;
depVerOperator = op;
}
// One symbol operators
else {
op = depVer.substr(0, 1);
if (op == ">" || op == "<") {
op_size = 1;
depVerOperator = op;
}
}
depVer = depVer.substr(op_size);
} else {
if (depVer == ">" || depVer == "<"){
depVer = "*";
}
}
}
pack.dependencies.push_back({level, depName, depVersion});
pack.dependencies.push_back({level, depName, depVer, depVerOperator});
}
}