From c07fe0e65ccd0e13e6ebcacae8eb0521c9a16209 Mon Sep 17 00:00:00 2001 From: flan Date: Sat, 4 Jan 2020 05:36:14 +0100 Subject: [PATCH] Print version on startup The version is determined from either the contents of _version.py (expected to be present in release tarballs) or the output of `git describe --always`. --- .gitignore | 1 + ankisyncd/__init__.py | 28 ++++++++++++++++++++++++++++ ankisyncd/sync_app.py | 2 ++ 3 files changed, 31 insertions(+) diff --git a/.gitignore b/.gitignore index c56ee94..ca20904 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.pyc *.db +/ankisyncd/_version.py /collections /venv diff --git a/ankisyncd/__init__.py b/ankisyncd/__init__.py index 0e9c2be..8ad83df 100644 --- a/ankisyncd/__init__.py +++ b/ankisyncd/__init__.py @@ -3,3 +3,31 @@ import sys sys.path.insert(0, "/usr/share/anki") sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), "anki-bundled")) + +_homepage = "https://github.com/tsudoko/anki-sync-server" +_unknown_version = "[unknown version]" + + +def _get_version(): + try: + from ankisyncd._version import version + + return version + except ImportError: + pass + + import subprocess + + try: + return ( + subprocess.run( + ["git", "describe", "--always"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + .stdout.strip() + .decode() + or _unknown_version + ) + except (FileNotFoundError, subprocess.CalledProcessError): + return _unknown_version diff --git a/ankisyncd/sync_app.py b/ankisyncd/sync_app.py index faee4cf..c6b8b8a 100644 --- a/ankisyncd/sync_app.py +++ b/ankisyncd/sync_app.py @@ -642,6 +642,8 @@ def make_app(global_conf, **local_conf): def main(): logging.basicConfig(level=logging.INFO, format="[%(asctime)s]:%(levelname)s:%(name)s:%(message)s") + import ankisyncd + logger.info("ankisyncd {} ({})".format(ankisyncd._get_version(), ankisyncd._homepage)) from wsgiref.simple_server import make_server, WSGIRequestHandler from ankisyncd.thread import shutdown import ankisyncd.config