mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 02:51:10 +00:00
fix: match an annotated overlay header and keep the settings file's mode
This commit is contained in:
1 parent
31cead9b32
commit
0b671b2144
2 files changed
+11
-2
No files matched your search
@@ -156,8 +156,8 @@ UBISOFT_SETTINGS = "drive_c/users/steamuser/AppData/Local/Ubisoft Game Launcher/
|
||||
def overlay_off(text):
|
||||
lines = text.splitlines()
|
||||
try:
|
||||
start = lines.index("overlay:")
|
||||
except ValueError:
|
||||
start = next(i for i, line in enumerate(lines) if re.fullmatch(r"overlay:\s*(#.*)?", line))
|
||||
except StopIteration:
|
||||
if lines and not lines[-1].strip():
|
||||
lines.pop()
|
||||
return "\n".join(lines + ["overlay:", " enabled: false", " warning_enabled: false"]) + "\n"
|
||||
@@ -193,6 +193,8 @@ def ubisoft_overlay_off(env):
|
||||
try:
|
||||
with os.fdopen(handle, "w", encoding="utf-8") as target:
|
||||
target.write(updated)
|
||||
if settings.exists():
|
||||
os.chmod(staged, settings.stat().st_mode & 0o7777)
|
||||
os.replace(staged, settings)
|
||||
except BaseException:
|
||||
os.unlink(staged)
|
||||
|
||||
@@ -1239,6 +1239,10 @@ class UbisoftOverlayTest(unittest.TestCase):
|
||||
self.assertEqual(MODULE["overlay_off"]("overlay:\n fps_enabled: true\n\nmisc:\n a: 1\n"),
|
||||
"overlay:\n fps_enabled: true\n enabled: false\n warning_enabled: false\n\nmisc:\n a: 1\n")
|
||||
|
||||
def test_an_annotated_overlay_header_is_the_same_section(self):
|
||||
self.assertEqual(MODULE["overlay_off"]("overlay: # in-game\n enabled: true\n"),
|
||||
"overlay: # in-game\n enabled: false\n warning_enabled: false\n")
|
||||
|
||||
def test_only_prefixes_with_ubisoft_connect_are_touched(self):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
prefix = Path(tmp) / "447040/pfx"
|
||||
@@ -1251,8 +1255,11 @@ class UbisoftOverlayTest(unittest.TestCase):
|
||||
MODULE["ubisoft_overlay_off"](env)
|
||||
self.assertEqual(settings.read_text(), "overlay:\n enabled: false\n warning_enabled: false\n")
|
||||
settings.write_text(self.SETTINGS)
|
||||
settings.chmod(0o644)
|
||||
MODULE["ubisoft_overlay_off"](env)
|
||||
self.assertEqual(settings.read_text(), self.SETTINGS.replace("enabled: true", "enabled: false"))
|
||||
self.assertEqual(settings.stat().st_mode & 0o777, 0o644)
|
||||
self.assertEqual(sorted(p.name for p in settings.parent.iterdir()), ["settings.yaml"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in new issue
Block a user