From 7c75cefede6b4e0f8f576160c8758b5c7184170d Mon Sep 17 00:00:00 2001 From: Kload Date: Fri, 16 May 2014 15:39:40 +0200 Subject: [PATCH] Add beans --- bin/yunohost | 50 ++++++++++++++++++++++++++++++++++++++++++++++ bin/yunohost-api | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100755 bin/yunohost create mode 100755 bin/yunohost-api diff --git a/bin/yunohost b/bin/yunohost new file mode 100755 index 000000000..a8c1e88ad --- /dev/null +++ b/bin/yunohost @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import os.path + +from_source = False + +# Run from source +basedir = os.path.abspath('%s/../' % os.path.dirname(__file__)) +if os.path.isdir('%s/moulinette' % basedir): + sys.path.insert(0, basedir) + from_source = True + +from moulinette import init, cli, MoulinetteError +from moulinette.helpers import YunoHostError, colorize + + +## Main action + +if __name__ == '__main__': + # Run from source + init(_from_source=from_source) + + # Additional arguments + use_cache = True + if '--no-cache' in sys.argv: + use_cache = False + sys.argv.remove('--no-cache') + + args = list(sys.argv) + args.pop(0) + + # Check that YunoHost is installed + if not os.path.isfile('/etc/yunohost/installed') and \ + (len(args) < 2 or args[1] != 'tools' or args[2] != 'postinstall'): + from moulinette.interfaces.cli import colorize, get_locale + + # Init i18n + m18n.load_namespace('yunohost') + m18n.set_locale(get_locale()) + + # Print error and exit + print('%s %s' % (colorize(m18n.g('error'), 'red'), + m18n.n('yunohost_not_installed'))) + sys.exit(1) + + # Execute the action + ret = cli(['yunohost'], args, use_cache) + sys.exit(ret) diff --git a/bin/yunohost-api b/bin/yunohost-api new file mode 100755 index 000000000..df29b1441 --- /dev/null +++ b/bin/yunohost-api @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import os.path + +from_source = False + +# Run from source +basedir = os.path.abspath('%s/../' % os.path.dirname(__file__)) +if os.path.isdir('%s/moulinette' % basedir): + sys.path.insert(0, basedir) + from_source = True + +from moulinette import init, api, MoulinetteError + + +## Callbacks for additional routes + +def is_installed(): + """ + Check whether YunoHost is installed or not + + """ + installed = False + if os.path.isfile('/etc/yunohost/installed'): + installed = True + return { 'installed': installed } + + +## Main action + +if __name__ == '__main__': + # Run from source + init(_from_source=from_source) + + # Additional arguments + use_cache = True + if '--no-cache' in sys.argv: + use_cache = False + sys.argv.remove('--no-cache') + # TODO: Add log argument + + try: + # Run the server + api(['yunohost'], 6787, + {('GET', '/installed'): is_installed}, use_cache) + except MoulinetteError as e: + from moulinette.interfaces.cli import colorize + print('%s %s' % (colorize(m18n.g('error'), 'red'), e.strerror)) + sys.exit(e.errno) + sys.exit(0)