From d8dd81c64406dfbe1d75b3a94fec4c5c24610ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Mon, 13 Jul 2015 17:50:38 +0200 Subject: [PATCH] [fix] Display YunoHost packages versions (fix #11) --- bin/yunohost-api | 6 +++++- data/actionsmap/yunohost.yml | 8 +++++--- lib/yunohost/__init__.py | 38 ++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/bin/yunohost-api b/bin/yunohost-api index a15ba4f34..84f38c661 100755 --- a/bin/yunohost-api +++ b/bin/yunohost-api @@ -155,10 +155,14 @@ if __name__ == '__main__': _init_moulinette() from moulinette import (api, MoulinetteError) + from yunohost import get_versions try: # Run the server api(_retrieve_namespaces(), port=6787, - routes={('GET', '/installed'): is_installed}, + routes={ + ('GET', '/installed'): is_installed, + ('GET', '/version'): get_versions, + }, use_cache=USE_CACHE, use_websocket=USE_WEBSOCKET) except MoulinetteError as e: _die(e.strerror, m18n.g('error')) diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 95180f0f2..ee317f486 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -54,9 +54,11 @@ _global: arguments: -v: full: --version - help: Display moulinette version - action: version - version: moulinette %version% + help: Display YunoHost packages versions + action: callback + callback: + method: yunohost.get_versions + return: true ############################# # User # diff --git a/lib/yunohost/__init__.py b/lib/yunohost/__init__.py index e69de29bb..97cd1f5f3 100755 --- a/lib/yunohost/__init__.py +++ b/lib/yunohost/__init__.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +""" YunoHost scripts for the moulinette """ + +""" License + + Copyright (C) 2015 YUNOHOST.ORG + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program; if not, see http://www.gnu.org/licenses + +""" + +## Packages versions + +def get_version(package): + from moulinette.utils import process + return process.check_output( + "dpkg-query -W -f='${{Version}}' {0}".format(package) + ).strip() + +def get_versions(*args, **kwargs): + from collections import OrderedDict + return OrderedDict([ + ('moulinette', get_version('moulinette')), + ('moulinette-yunohost', get_version('moulinette-yunohost')), + ('yunohost-admin', get_version('yunohost-admin')), + ])