fix broken dependencies management

This commit is contained in:
MihailRis 2025-10-14 22:54:23 +03:00
parent 11403084e7
commit ee6f006b79
5 changed files with 10 additions and 11 deletions

View File

@ -104,7 +104,7 @@ pack.get_info(packids: table) -> {id={...}, id2={...}, ...}
```
```lua
pack.assemble(packis: table) -> table
pack.assemble(packids: table) -> table
```
Checks the configuration for correctness and adds dependencies, returning the complete configuration.

View File

@ -92,7 +92,7 @@ pack.get_info(packids: table) -> {id={...}, id2={...}, ...}
```
```lua
pack.assemble(packis: table) -> table
pack.assemble(packids: table) -> table
```
Проверяет корректность конфигурации и добавляет зависимости, возвращая полную.

View File

@ -33,4 +33,5 @@
onup="on_history_up()"
ondown="on_history_down()">
</textbox>
<textbox size="200" margin="20" multiline="true" text-wrap="true" autoresize="false"/>
</container>

View File

@ -347,12 +347,6 @@ function refresh()
packs_info[id] = {packinfo.id, packinfo.title}
end
for i,id in ipairs(packs_installed) do
if table.has(required, id) then
document["pack_"..id].enabled = false
end
end
if #packs_excluded == 0 then packs_excluded = table.copy(packs_available) end
if #packs_included == 0 then packs_included = table.copy(packs_installed) end
@ -372,6 +366,12 @@ function refresh()
place_pack(packs_add, packinfo, callback, string.format('reposition_func("%s")', packinfo.id))
end
for i,id in ipairs(packs_installed) do
if table.has(required, id) then
document["pack_"..id].enabled = false
end
end
check_deleted()
apply_movements(packs_cur, packs_add)
refresh_changes()

View File

@ -108,17 +108,15 @@ static bool resolve_dependencies(
continue;
}
auto dep_pack = found -> second;
auto dep_pack = found->second;
if (Version::matchesPattern(dep.version) && Version::matchesPattern(dep_pack.version)
&& Version(dep_pack.version)
.processOperator(dep.op, Version(dep.version))
) {
// dependency pack version meets the required one
continue;
} else if (dep.version == "*" || dep.version == dep_pack.version){
// fallback: dependency pack version also meets required one
continue;
} else {
throw contentpack_error(
dep.id,