diff --git a/poetry.lock b/poetry.lock index a6998a8b..d5d3e1ef 100644 --- a/poetry.lock +++ b/poetry.lock @@ -523,6 +523,18 @@ brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "verlat" +version = "0.1.0.post1" +description = "Get info about the latest release of a package on PyPI." +category = "main" +optional = false +python-versions = ">=3.8,<4.0" + +[package.dependencies] +pydantic = ">=1.8.2,<2.0.0" +requests = ">=2.25.1,<3.0.0" + [[package]] name = "virtualenv" version = "20.4.7" @@ -576,7 +588,7 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pyt [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "61c92604764d36e7affa72dfd4338a8567245288ff1ef0b77459eec4eed51038" +content-hash = "baa9414957d9423a3b8c7fb1c27f8de153c0963ee393cc99b63f8bdc897e43e3" [metadata.files] aiohttp = [ @@ -1079,6 +1091,10 @@ urllib3 = [ {file = "urllib3-1.26.5-py2.py3-none-any.whl", hash = "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c"}, {file = "urllib3-1.26.5.tar.gz", hash = "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098"}, ] +verlat = [ + {file = "verlat-0.1.0.post1-py3-none-any.whl", hash = "sha256:62835f120e88f8f3cb2879d7394f971a588aad3cd0cc5d08e7d3bc9b29697555"}, + {file = "verlat-0.1.0.post1.tar.gz", hash = "sha256:10a03e3aa87e5ffa0fdc55819931b5738752651387cd65517311088506951938"}, +] virtualenv = [ {file = "virtualenv-20.4.7-py2.py3-none-any.whl", hash = "sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76"}, {file = "virtualenv-20.4.7.tar.gz", hash = "sha256:14fdf849f80dbb29a4eb6caa9875d476ee2a5cf76a5f5415fa2f1606010ab467"}, diff --git a/pyproject.toml b/pyproject.toml index 0b432c05..5e5b23e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,7 @@ tg-login = "^0.0.2" pytesseract = "^0.3.7" rich = "^10.3.0" pyfiglet = "^0.8.post1" +verlat = "^0.1.0" [tool.poetry.dev-dependencies] typer-cli = "^0.0.11" diff --git a/tgcf/cli.py b/tgcf/cli.py index e6af8fc9..8e4ed08d 100644 --- a/tgcf/cli.py +++ b/tgcf/cli.py @@ -11,8 +11,9 @@ import typer from dotenv import load_dotenv from pyfiglet import Figlet -from rich import traceback +from rich import print, traceback from rich.logging import RichHandler +from verlat import latest_release from tgcf import __version__ @@ -22,6 +23,13 @@ app = typer.Typer(add_completion=False) +def topper(): + fig = Figlet(font="speed") + print(fig.renderText("tgcf")) + version_check() + print("\n\n") + + class Mode(str, Enum): """tgcf works in two modes.""" @@ -29,13 +37,6 @@ class Mode(str, Enum): LIVE = "live" -def version_callback(value: bool): - """Show current version and exit.""" - if value: - print(__version__) - raise typer.Exit() - - def verbosity_callback(value: bool): """Set logging level.""" traceback.install() @@ -53,9 +54,7 @@ def verbosity_callback(value: bool): ) ], ) - fig = Figlet(font="speed") - print(fig.renderText("tgcf")) - + topper() logging.info("Verbosity turned on! This is suitable for debugging") nl = "\n" logging.info( @@ -67,6 +66,23 @@ def verbosity_callback(value: bool): ) +def version_callback(value: bool): + """Show current version and exit.""" + + if value: + print(__version__) + raise typer.Exit() + + +def version_check(): + latver = latest_release("tgcf").version + if __version__ != latver: + print( + f"tgcf has a newer release {latver} availaible!\ + \nVisit http://bit.ly/update-tgcf" + ) + + @app.command() def main( mode: Mode = typer.Argument(