diff --git a/core/updater.py b/core/updater.py index 05e1b53..5a13f0b 100644 --- a/core/updater.py +++ b/core/updater.py @@ -3,6 +3,24 @@ from pathlib import Path REPO_DIR = Path(__file__).parent.parent +def is_update_available(): + try: + if not (REPO_DIR / ".git").exists(): + return False + + repo = Repo(REPO_DIR) + origin = repo.remotes.origin + + origin.fetch() + local_commit = repo.head.commit + remote_commit = origin.refs[repo.active_branch.name].commit + + return local_commit != remote_commit + except GitCommandError: + return False + except Exception: + return False + def update_repository(): try: if not (REPO_DIR / ".git").exists(): @@ -11,14 +29,6 @@ def update_repository(): repo = Repo(REPO_DIR) origin = repo.remotes.origin - origin.fetch() - - local_commit = repo.head.commit - remote_commit = origin.refs[repo.active_branch.name].commit - - if local_commit == remote_commit: - return "UP_TO_DATE", "You are already on the latest version." - origin.pull() return "UPDATED", "CLARA has been updated successfully." diff --git a/main.py b/main.py index 4f7e2bf..d90f5b1 100644 --- a/main.py +++ b/main.py @@ -8,7 +8,7 @@ from core.file_search import find from core.web_search import MullvadLetaWrapper from core.discord_presence import presence from core.app_launcher import list_apps, launch -from core.updater import update_repository +from core.updater import update_repository, is_update_available ASSET = Path(__file__).parent / "assets" / "2ktan.png" @@ -472,6 +472,12 @@ class MainWindow(QtWidgets.QMainWindow): QtWidgets.QApplication.restoreOverrideCursor() def update_git(self): + update_available = is_update_available() + + if not update_available: + QtWidgets.QMessageBox.information(self, "No Updates", "You are already on the latest version.") + return + status, message = update_repository() if status == "UPDATED": @@ -481,9 +487,6 @@ class MainWindow(QtWidgets.QMainWindow): QtWidgets.QMessageBox.StandardButton.Yes) if reply == QtWidgets.QMessageBox.StandardButton.Yes: self.restart_application() - - elif status == "UP_TO_DATE": - QtWidgets.QMessageBox.information(self, "No Updates", message) elif status == "FAILED": QtWidgets.QMessageBox.critical(self, "Update Failed", message)