From d97291f660a289fd9247e32097ad609544c23b43 Mon Sep 17 00:00:00 2001 From: Bernhard Scheirle Date: Sat, 9 Mar 2024 11:17:23 +0100 Subject: [PATCH] Only check for new version once a day if already on the latest version --- git_gerrit/utils/version.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/git_gerrit/utils/version.py b/git_gerrit/utils/version.py index 85359ca..98955ca 100644 --- a/git_gerrit/utils/version.py +++ b/git_gerrit/utils/version.py @@ -1,14 +1,17 @@ # SPDX-FileCopyrightText: 2024-present Bernhard Scheirle # SPDX-License-Identifier: GPL-3.0-or-later +import datetime import packaging.version import requests import rich.console from git_gerrit.__about__ import __version__ +from git_gerrit.utils.git import git class Version: version = __version__ + config_key = "git-gerrit-bridge.last-version-check" @staticmethod def get_latest_version() -> str: @@ -19,12 +22,32 @@ def get_latest_version() -> str: return Version.version @staticmethod - def print_version_check(): - latest = packaging.version.parse(Version.get_latest_version()) + def get_last_check(): + time = git["config", "--global", "--default", "0", "--get", Version.config_key]() + return datetime.datetime.fromtimestamp(int(time)).date() + + @staticmethod + def set_last_check(): + git["config", "--global", Version.config_key, + str(int(datetime.datetime.today().timestamp()))]() + + @staticmethod + def check_version() -> str|None: + if datetime.datetime.today().date() == Version.get_last_check(): + return None current = packaging.version.parse(Version.version) + latest = packaging.version.parse(Version.get_latest_version()) if current < latest: + return f"{latest}" + Version.set_last_check() + return None + + @staticmethod + def print_version_check(): + new_version = Version.check_version() + if new_version: console = rich.console.Console() console.print() console.print( (" [red]![/] New version of [turquoise2]git gerrit[/] available: " - f"{latest} (Currently installed {current})")) + f"{new_version} (Currently installed {Version.version})"))