From a239ca439ad0d1971078f5e128d93e01aecc7f43 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 30 Nov 2019 20:54:54 +0200 Subject: [PATCH] Load version info from Git. Fixes #387 --- mautrix_telegram/__main__.py | 6 ++-- mautrix_telegram/commands/handler.py | 2 +- mautrix_telegram/get_version.py | 49 ++++++++++++++++++++++++++++ mautrix_telegram/version.py | 1 + setup.py | 14 ++++++-- 5 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 mautrix_telegram/get_version.py create mode 100644 mautrix_telegram/version.py diff --git a/mautrix_telegram/__main__.py b/mautrix_telegram/__main__.py index a59c0e53..2880dcea 100644 --- a/mautrix_telegram/__main__.py +++ b/mautrix_telegram/__main__.py @@ -35,7 +35,7 @@ from .portal import init as init_portal from .puppet import Puppet, init as init_puppet from .sqlstatestore import SQLStateStore from .user import User, init as init_user -from . import __version__ +from .version import version, linkified_version try: import prometheus_client as prometheus @@ -47,8 +47,10 @@ class TelegramBridge(Bridge): name = "mautrix-telegram" command = "python -m mautrix-telegram" description = "A Matrix-Telegram puppeting bridge." + repo_url = "https://github.com/tulir/mautrix-telegram" real_user_content_key = "net.maunium.telegram.puppet" - version = __version__ + version = version + markdown_version = linkified_version config_class = Config matrix_class = MatrixHandler state_store_class = SQLStateStore diff --git a/mautrix_telegram/commands/handler.py b/mautrix_telegram/commands/handler.py index cc728be6..8d43401d 100644 --- a/mautrix_telegram/commands/handler.py +++ b/mautrix_telegram/commands/handler.py @@ -112,7 +112,7 @@ def command_handler(_func: Optional[CommandHandlerFunc] = None, *, needs_auth: b class CommandProcessor(BaseCommandProcessor): def __init__(self, context: c.Context) -> None: super().__init__(az=context.az, config=context.config, event_class=CommandEvent, - loop=context.loop) + loop=context.loop, bridge=context.bridge) self.tgbot = context.bot self.bridge = context.bridge self.az, self.config, self.loop, self.tgbot = context.core diff --git a/mautrix_telegram/get_version.py b/mautrix_telegram/get_version.py new file mode 100644 index 00000000..690eadf7 --- /dev/null +++ b/mautrix_telegram/get_version.py @@ -0,0 +1,49 @@ +import subprocess +import os + +from . import __version__ + +cmd_env = { + "PATH": os.environ["PATH"], + "HOME": os.environ["HOME"], + "LANG": "C", + "LC_ALL": "C", +} + + +def run(cmd): + return subprocess.check_output(cmd, stderr=subprocess.DEVNULL, env=cmd_env) + + +if os.path.exists(".git"): + try: + git_revision = run(["git", "rev-parse", "HEAD"]).strip().decode("ascii") + git_revision_url = f"https://github.com/tulir/mautrix-telegram/commit/{git_revision}" + git_revision = git_revision[:8] + except (subprocess.SubprocessError, OSError): + git_revision = "unknown" + git_revision_url = None + + try: + git_tag = run(["git", "describe", "--exact-match", "--tags"]).strip().decode("ascii") + git_tag_url = f"https://github.com/tulir/mautrix-telegram/releases/tag/{git_tag}" + except (subprocess.SubprocessError, OSError): + git_tag = None + git_tag_url = None +else: + git_revision = "unknown" + git_revision_url = None + git_tag = None + git_tag_url = None + +if git_tag and __version__ == git_tag[1:].replace("-", ""): + version = __version__ + linkified_version = f"[{version}]({git_tag_url})" +else: + if not __version__.endswith("+dev"): + __version__ += "+dev" + version = f"{__version__}@{git_revision}" + if git_revision_url: + linkified_version = f"{__version__}[@{git_revision}]({git_revision_url})" + else: + linkified_version = version diff --git a/mautrix_telegram/version.py b/mautrix_telegram/version.py new file mode 100644 index 00000000..47f7fff6 --- /dev/null +++ b/mautrix_telegram/version.py @@ -0,0 +1 @@ +from .get_version import git_tag, git_revision, version, linkified_version diff --git a/setup.py b/setup.py index 45f8dce4..488797a7 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ import setuptools import glob -import mautrix_telegram + +from mautrix_telegram.get_version import git_tag, git_revision, version, linkified_version extras = { "speedups": ["cryptg>=0.1,<0.3", "cchardet", "aiodns", "Brotli"], @@ -16,9 +17,18 @@ try: except IOError: long_desc = "Failed to read README.md" +with open("mautrix_telegram/version.py", "w") as version_file: + version_file.write(f"""# Generated in setup.py + +git_tag = {git_tag!r} +git_revision = {git_revision!r} +version = {version!r} +linkified_version = {linkified_version!r} +""") + setuptools.setup( name="mautrix-telegram", - version=mautrix_telegram.__version__, + version=version, url="https://github.com/tulir/mautrix-telegram", author="Tulir Asokan",