1
0
Fork 0
mirror of synced 2024-07-14 02:45:55 +12:00
Rare/rare/utils/legendary_utils.py

58 lines
2 KiB
Python
Raw Normal View History

2021-02-10 23:48:25 +13:00
import os
import platform
2021-03-09 08:36:42 +13:00
from logging import getLogger
2021-02-10 23:48:25 +13:00
from PyQt5.QtCore import QStandardPaths
from legendary.core import LegendaryCore
2022-08-03 11:33:50 +12:00
from rare.lgndr.cli import LegendaryCLI
from rare.lgndr.glue.arguments import LgndrUninstallGameArgs
from rare.lgndr.glue.monkeys import LgndrIndirectStatus
from rare.utils import config_helper
2021-02-10 23:48:25 +13:00
2021-03-09 08:36:42 +13:00
logger = getLogger("Legendary Utils")
2021-02-10 23:48:25 +13:00
def uninstall_game(core: LegendaryCore, app_name: str, keep_files=False, keep_config=False):
2021-03-09 08:36:42 +13:00
igame = core.get_installed_game(app_name)
2021-05-01 21:17:18 +12:00
# remove shortcuts link
2022-04-01 08:29:31 +13:00
desktop = QStandardPaths.writableLocation(QStandardPaths.DesktopLocation)
applications = QStandardPaths.writableLocation(QStandardPaths.ApplicationsLocation)
if platform.system() == "Linux":
2022-04-01 08:29:31 +13:00
desktop_shortcut = os.path.join(desktop, f"{igame.title}.desktop")
if os.path.exists(desktop_shortcut):
os.remove(desktop_shortcut)
applications_shortcut = os.path.join(applications, f"{igame.title}.desktop")
if os.path.exists(applications_shortcut):
os.remove(applications_shortcut)
2021-05-01 21:17:18 +12:00
elif platform.system() == "Windows":
2022-04-01 08:29:31 +13:00
game_title = igame.title.split(":")[0]
desktop_shortcut = os.path.join(desktop, f"{game_title}.lnk")
if os.path.exists(desktop_shortcut):
os.remove(desktop_shortcut)
start_menu_shortcut = os.path.join(applications, "..", f"{game_title}.lnk")
if os.path.exists(start_menu_shortcut):
os.remove(start_menu_shortcut)
status = LgndrIndirectStatus()
LegendaryCLI(core).uninstall_game(
LgndrUninstallGameArgs(
app_name=app_name,
keep_files=keep_files,
indirect_status=status,
yes=True,
2021-12-24 22:09:50 +13:00
)
)
if not keep_config:
logger.info("Removing sections in config file")
config_helper.remove_section(app_name)
config_helper.remove_section(f"{app_name}.env")
config_helper.save_config()
return status.success, status.message