From fb9e8d4138ba52b610d5b3c0731b04166c3fb816 Mon Sep 17 00:00:00 2001 From: derrod Date: Sat, 5 Sep 2020 05:18:15 +0200 Subject: [PATCH] [core] Fix disk space check for initial install and add override --- legendary/core.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/legendary/core.py b/legendary/core.py index dab9931..8ad6c05 100644 --- a/legendary/core.py +++ b/legendary/core.py @@ -802,7 +802,10 @@ class LegendaryCore: return dlm, anlres, igame @staticmethod - def check_installation_conditions(analysis: AnalysisResult, install: InstalledGame) -> ConditionCheckResult: + def check_installation_conditions(analysis: AnalysisResult, + install: InstalledGame, + updating: bool = False, + ignore_space_req: bool = False) -> ConditionCheckResult: results = ConditionCheckResult(failures=set(), warnings=set()) # if on linux, check for eac in the files @@ -824,12 +827,20 @@ class LegendaryCore: results.warnings.add('This game is not marked for offline use (may still work).') # check if enough disk space is free (dl size is the approximate amount the installation will grow) - min_disk_space = analysis.uncompressed_dl_size + analysis.biggest_file_size + min_disk_space = analysis.uncompressed_dl_size + if updating: + min_disk_space += analysis.biggest_file_size + _, _, free = shutil.disk_usage(os.path.split(install.install_path)[0]) if free < min_disk_space: free_mib = free / 1024 / 1024 required_mib = min_disk_space / 1024 / 1024 - results.failures.add(f'Not enough available disk space! {free_mib:.02f} MiB < {required_mib:.02f} MiB') + if ignore_space_req: + results.warnings.add(f'Potentially not enough available disk space! ' + f'{free_mib:.02f} MiB < {required_mib:.02f} MiB') + else: + results.failures.add(f'Not enough available disk space!' + f'{free_mib:.02f} MiB < {required_mib:.02f} MiB') return results