diff --git a/src/aura_engine/base/config.py b/src/aura_engine/base/config.py index de68fe4e5a43c26bb3b1d4e30a99cd4def66373f..ed5c6b51732ca5cc83a49272d70d1c280d196531 100644 --- a/src/aura_engine/base/config.py +++ b/src/aura_engine/base/config.py @@ -65,6 +65,14 @@ class AuraConfig: self.set("config_dir", os.path.dirname(ini_path)) print(f"Using configuration at: {ini_path}") + def init_version(self, version: dict): + """ + Read and set the component version from VERSION file in project root. + """ + self.set("version_control", version.get("control")) + self.set("version_core", version.get("core")) + self.set("version_liquidsoap", version.get("liquidsoap")) + @staticmethod def config(): """ diff --git a/src/aura_engine/engine.py b/src/aura_engine/engine.py index 8b082853ce92ad6340ed243439c1dcb777454629..677a33778a664048f5bcc88e38edd03e9fa66500 100644 --- a/src/aura_engine/engine.py +++ b/src/aura_engine/engine.py @@ -23,11 +23,11 @@ The Engine. import json import logging +import os import time from contextlib import suppress from threading import Thread -import aura_engine.meta as meta from aura_engine.base.api import LiquidsoapUtil as LU from aura_engine.base.config import AuraConfig from aura_engine.base.exceptions import ( @@ -109,7 +109,8 @@ class Engine: self.player = Player(self.connector, self.event_dispatcher) self.event_dispatcher.on_boot() - self.logger.info(EngineSplash.splash_screen("Engine Core", meta.__version__)) + + self.logger.info(EngineSplash.splash_screen(self.config)) self.event_dispatcher.on_ready() # @@ -177,18 +178,30 @@ class Engine: res = self.connector.send_lqc_command("engine", "update_config", json_config) return res - def version(self) -> dict: + def init_version(self) -> dict: """ - Get the version of Liquidsoap. + Get the versions of Engine components and store in configuration. Returns: - dict: Dictionary with `engine-core` and `liquidsoap` version + dict: { + "control": Engine Control version + "core": Engine Core version + "liquidsoap": Liquidsoap version + } """ + ctrl_version = None + with open(os.path.join("", "VERSION")) as version_file: + ctrl_version = version_file.read().strip() + # FIXME Should be in one call core_version = self.connector.send_lqc_command("engine", "version") liq_version = self.connector.send_lqc_command("version", "") - return {"engine-core": core_version, "liquidsoap": liq_version} + liq_version = liq_version.split(" ")[1] + + self.config.set("version_control", ctrl_version) + self.config.set("version_core", core_version) + self.config.set("version_liquidsoap", liq_version) def uptime(self): """ @@ -280,7 +293,7 @@ class Player: `entry.state`. Args: - entries ([Entry]): An array holding filesystem entries + entry (Entry): An array holding filesystem entries """ entry.status = EntryPlayState.LOADING @@ -721,19 +734,19 @@ class EngineSplash: """Print the splash and version information on boot.""" @staticmethod - def splash_screen(component, version): + def splash_screen(config): """ Print the engine logo and version info. """ - return """\n + version = config.get("version_control") + core_version = config.get("version_core") + liq_version = config.get("version_liquidsoap") + return f"""\n █████╗ ██╗ ██╗██████╗ █████╗ ███████╗███╗ ██╗ ██████╗ ██╗███╗ ██╗███████╗ ██╔â•â•â–ˆâ–ˆâ•—██║ ██║██╔â•â•â–ˆâ–ˆâ•—██╔â•â•â–ˆâ–ˆâ•— ██╔â•â•â•â•â•â–ˆâ–ˆâ–ˆâ–ˆâ•— ██║██╔â•â•â•â•â• ██║████╗ ██║██╔â•â•â•â•â• ███████║██║ ██║██████╔â•â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘ █████╗ ██╔██╗ ██║██║ ███╗██║██╔██╗ ██║█████╗ ██╔â•â•â–ˆâ–ˆâ•‘██║ ██║██╔â•â•â–ˆâ–ˆâ•—██╔â•â•â–ˆâ–ˆâ•‘ ██╔â•â•â• ██║╚██╗██║██║ ██║██║██║╚██╗██║██╔â•â•â• ██║ ██║╚██████╔â•â–ˆâ–ˆâ•‘ ██║██║ ██║ ███████╗██║ ╚████║╚██████╔â•â–ˆâ–ˆâ•‘██║ ╚████║███████╗ â•šâ•â• â•šâ•â• â•šâ•â•â•â•â•â• â•šâ•â• â•šâ•â•â•šâ•â• â•šâ•â• â•šâ•â•â•â•â•â•â•â•šâ•â• â•šâ•â•â•â• â•šâ•â•â•â•â•â• â•šâ•â•â•šâ•â• â•šâ•â•â•â•â•šâ•â•â•â•â•â•â• - %s v%s - Ready to play! - \n""" % ( - component, - version, - ) + control v{version}, core v{core_version}, liquidsoap v{liq_version} - Ready to play! + \n""" diff --git a/src/aura_engine/meta.py b/src/aura_engine/meta.py deleted file mode 100644 index 30999f8a3f535d322290a13b17a8734045a845b9..0000000000000000000000000000000000000000 --- a/src/aura_engine/meta.py +++ /dev/null @@ -1,10 +0,0 @@ -# Meta -__author__ = "David Trattnig and Gottfried Gaisbauer" -__copyright__ = "Copyright 2017-2020, Aura Engine Team" -__credits__ = ["Michael Liebler"] -__license__ = "GNU Affero General Public License (AGPL) Version 3" -__version__ = "0.9.9" -__version_info__ = (0, 9, 9) -__maintainer__ = "David Trattnig" -__email__ = "david.trattnig@subsquare.at" -__status__ = "Development" diff --git a/src/aura_engine/plugins/monitor.py b/src/aura_engine/plugins/monitor.py index 1f881c467eba07846f9c736663772b9f7ad51f12..f91aa4f83b680e1bdf6b35967dfc6be91c7a772e 100644 --- a/src/aura_engine/plugins/monitor.py +++ b/src/aura_engine/plugins/monitor.py @@ -38,7 +38,6 @@ from socket import AF_INET, SO_BROADCAST, SOCK_DGRAM, SOL_SOCKET, socket import requests -import aura_engine.meta as meta from aura_engine.base.config import AuraConfig from aura_engine.base.utils import SimpleUtil as SU @@ -235,10 +234,15 @@ class AuraMonitor: """ Request the current status of all components. """ - self.status["engine"]["version"] = meta.__version__ + self.engine.init_version() + ctrl_version = self.config.get("version_control") + core_version = self.config.get("version_core") + liq_version = self.config.get("version_liquidsoap") + + self.status["engine"]["version"] = ctrl_version self.engine.player.connector.enable_transaction() - self.status["lqs"]["version"] = self.engine.version() + self.status["lqs"]["version"] = {"core": core_version, "liquidsoap": liq_version} self.status["lqs"]["outputs"] = self.engine.player.mixer.mixer_outputs() self.status["lqs"]["mixer"] = self.engine.player.mixer.mixer_status() self.engine.player.connector.disable_transaction()