From 47a1d81881a2fab9bba892bcc98f1fe76d23f04b Mon Sep 17 00:00:00 2001 From: Diijkstra Date: Tue, 29 Jan 2019 21:49:30 +0100 Subject: [PATCH] Version and OpenHAB compatibility check Warns on startup if OpenHAB version is not supported by current release. Prints nice version number on startup. Issue #71 --- .../jsr223/core/components/000_Version.py | 11 ++++++++++ Core/automation/lib/python/core/__init__.py | 21 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 Core/automation/jsr223/core/components/000_Version.py diff --git a/Core/automation/jsr223/core/components/000_Version.py b/Core/automation/jsr223/core/components/000_Version.py new file mode 100644 index 00000000..085588f6 --- /dev/null +++ b/Core/automation/jsr223/core/components/000_Version.py @@ -0,0 +1,11 @@ +import core +from core.log import logging, LOG_PREFIX +from org.openhab.core import OpenHAB + +log = logging.getLogger(LOG_PREFIX + ".core") + +def scriptLoaded(*args): + log.info("openhab2-jython version: {}".format(core.__version__)) + if not core.openhab_support(OpenHAB.getVersion(), OpenHAB.buildString()): + log.warn("OpenHAB in version '{}' is not fully supported by openhab2-jython-{}".format( + OpenHAB.getVersion(), core.__version__)) diff --git a/Core/automation/lib/python/core/__init__.py b/Core/automation/lib/python/core/__init__.py index 4a129bbb..94e3970f 100644 --- a/Core/automation/lib/python/core/__init__.py +++ b/Core/automation/lib/python/core/__init__.py @@ -8,3 +8,24 @@ def _item_getattr(self, name): return self[name] type(items).__getattr__ = _item_getattr.__get__(items, type(items)) + +__version__="1.0.0a" + +def openhab_support(version, build_number): + """Checks if given OpenHab version is compatible with this release + + Arguments: + version {str} -- version of OpenHab (ex. 2.4.0, 2.4.0-M2) + build_number {str} -- build string reported by OpenHAB instance (ignored for now) + + Returns: + True -- scripts are known to be working with this version of OH + False -- OH version is too old or not tested, issues might arise + """ + from pkg_resources import parse_version + + # Get rid of -SNAPSHOT or -MX suffix for 'epoch' comparison + ver_tuple = version.split("-", 1) + ver_epoch = parse_version(ver_tuple[0]) + + return ver_epoch >= parse_version("2.4.0")