Skip to content

Commit ce79a5b

Browse files
committed
Add auto install for REDmod's not in mods/
1 parent eebbbab commit ce79a5b

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

games/game_cyberpunk2077.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ def dataLooksValid(
6363
parent = filetree.parent()
6464
if parent is not None and self.dataLooksValid(parent) is self.FIXABLE:
6565
return self.FIXABLE
66-
if (status := super().dataLooksValid(filetree)) is not self.INVALID:
66+
if (status := super().dataLooksValid(filetree)) is self.INVALID:
67+
# Archive with REDmod folders, not in mods/
68+
if all(self._valid_redmod(e) for e in filetree):
69+
return self.CheckReturn.FIXABLE
70+
else:
6771
match self._check_bin_folder(filetree):
6872
case self.INVALID:
6973
return self.INVALID
@@ -76,6 +80,11 @@ def dataLooksValid(
7680
status = self.FIXABLE
7781
return status
7882

83+
def _valid_redmod(self, filetree: mobase.IFileTree | mobase.FileTreeEntry) -> bool:
84+
return isinstance(filetree, mobase.IFileTree) and bool(
85+
filetree and filetree.find("info.json")
86+
)
87+
7988
def _check_bin_folder(
8089
self, filetree: mobase.IFileTree
8190
) -> mobase.ModDataChecker.CheckReturn:
@@ -117,6 +126,12 @@ def fix(self, filetree: mobase.IFileTree) -> mobase.IFileTree:
117126
filetree.move(file, target)
118127
clear_empty_folder(parent)
119128
self._fix_cet_framework(filetree)
129+
# REDmod
130+
for entry in list(filetree):
131+
if not self._regex_patterns.valid.match(
132+
entry.name().casefold()
133+
) and self._valid_redmod(entry):
134+
filetree.move(entry, "mods/")
120135
return filetree
121136

122137
def _fix_cet_framework(self, filetree: mobase.IFileTree):

0 commit comments

Comments
 (0)