diff options
-rw-r--r-- | youtube/__init__.py | 5 | ||||
-rw-r--r-- | youtube/get_app_version/__init__.py | 1 | ||||
-rw-r--r-- | youtube/get_app_version/get_app_version.py | 54 | ||||
-rw-r--r-- | youtube/templates/base.html | 6 | ||||
-rw-r--r-- | youtube/version.py | 3 |
5 files changed, 68 insertions, 1 deletions
diff --git a/youtube/__init__.py b/youtube/__init__.py index b27496d..f935f1e 100644 --- a/youtube/__init__.py +++ b/youtube/__init__.py @@ -1,4 +1,5 @@ from youtube import util +from .get_app_version import app_version import flask from flask import request import settings @@ -32,6 +33,10 @@ def inject_theme_preference(): return { 'theme_path': '/youtube.com/static/' + theme_names[settings.theme] + '.css', 'settings': settings, + # Detect version + 'current_version': app_version()['version'], + 'current_branch': app_version()['branch'], + 'current_commit': app_version()['commit'], } diff --git a/youtube/get_app_version/__init__.py b/youtube/get_app_version/__init__.py new file mode 100644 index 0000000..2d5290f --- /dev/null +++ b/youtube/get_app_version/__init__.py @@ -0,0 +1 @@ +from .get_app_version import * diff --git a/youtube/get_app_version/get_app_version.py b/youtube/get_app_version/get_app_version.py new file mode 100644 index 0000000..51eb2ce --- /dev/null +++ b/youtube/get_app_version/get_app_version.py @@ -0,0 +1,54 @@ +from __future__ import unicode_literals +from subprocess import ( + call, + STDOUT +) +from ..version import __version__ +import os +import subprocess + + +def app_version(): + def minimal_env_cmd(cmd): + # make minimal environment + env = {} + for k in ['SYSTEMROOT', 'PATH']: + v = os.environ.get(k) + if v is not None: + env[k] = v + + env['LANGUAGE'] = 'C' + env['LANG'] = 'C' + env['LC_ALL'] = 'C' + out = subprocess.Popen( + cmd, stdout=subprocess.PIPE, env=env).communicate()[0] + return out + + if call(["git", "branch"], stderr=STDOUT, + stdout=open(os.devnull, 'w')) != 0: + + subst_list = { + "version": __version__, + "branch": None, + "commit": None + } + + else: + # version + describe = minimal_env_cmd(["git", "describe", "--always"]) + git_revision = describe.strip().decode('ascii') + # branch + branch = minimal_env_cmd(["git", "branch"]) + git_branch = branch.strip().decode('ascii').replace('* ', '') + + subst_list = { + "version": __version__, + "branch": git_branch, + "commit": git_revision + } + + return subst_list + + +if __name__ == "__main__": + app_version() diff --git a/youtube/templates/base.html b/youtube/templates/base.html index 33e67a6..bb7437d 100644 --- a/youtube/templates/base.html +++ b/youtube/templates/base.html @@ -231,7 +231,11 @@ </main> <footer class="footer"> <p>This site is Free/Libre Software</p> - <p>Current version: 3304bab @ master</p> + {% if current_commit and current_version %} + <p>Current version: {{ current_version }}-{{ current_commit }} @ {{ current_branch }}</p> + {% else %} + <p>Current version: {{ current_version }}</p> + {% endif %} </footer> </body> diff --git a/youtube/version.py b/youtube/version.py new file mode 100644 index 0000000..748c016 --- /dev/null +++ b/youtube/version.py @@ -0,0 +1,3 @@ +from __future__ import unicode_literals + +__version__ = '0.1.0' |