X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=launch;fp=launch;h=0000000000000000000000000000000000000000;hb=69d10d0f55740591a43f4f49e90e09785ab0675f;hp=9d12fda1ebdc9f014ca34fbf2ae1bcb0c4345828;hpb=0236b2bf31b893ab0b53374c0d3a0bc0ab9deda3;p=mpd-sima.git diff --git a/launch b/launch deleted file mode 100755 index 9d12fda..0000000 --- a/launch +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""Sima -""" - -# standard library import -import logging -import sys - -from importlib import __import__ -from os.path import isfile -## - -# third parties components -## - -# local import -from sima import core -from sima.lib.logger import set_logger -from sima.lib.simadb import SimaDB -from sima.utils.config import ConfMan -from sima.utils.startopt import StartOpt -from sima.utils.utils import exception_log, SigHup - # core plugins -from sima.plugins.core.history import History -from sima.plugins.core.mpdoptions import MpdOptions -## - - -def load_plugins(sima, source): - """Handles internal/external plugins - sima: sima.core.Sima instance - source: ['internal', 'contrib'] - """ - if not sima.config.get('sima', source ): - return - logger = logging.getLogger('sima') - for plugin in sima.config.get('sima', source).split(','): - plugin = plugin.strip(' \n') - module = 'sima.plugins.{0}.{1}'.format(source, plugin.lower()) - try: - mod_obj = __import__(module, fromlist=[plugin]) - except ImportError as err: - logger.error('Failed to load plugin\'s module: {0} ({1})'.format(module, err)) - sima.shutdown() - try: - plugin_obj = getattr(mod_obj, plugin) - except AttributeError as err: - logger.error('Failed to load plugin {0} ({1})'.format(plugin, err)) - sima.shutdown() - logger.info('Loading {0} plugin: {name} ({doc})'.format(source, **plugin_obj.info())) - sima.register_plugin(plugin_obj) - - -def start(sopt, restart=False): - """starts application - """ - # set logger - verbosity = sopt.options.get('verbosity', 'warning') - logfile = sopt.options.get('logfile', None) - cli_loglevel = getattr(logging, verbosity.upper()) - set_logger(level=verbosity, logfile=logfile) - logger = logging.getLogger('sima') - logger.setLevel(cli_loglevel) - # loads configuration - config = ConfMan(logger, sopt.options).config - logger.setLevel(getattr(logging, - config.get('log', 'verbosity').upper())) # pylint: disable=E1103 - - logger.debug('Command line say: {0}'.format(sopt.options)) - # Create Database - db_file = config.get('sima', 'db_file') - if (sopt.options.get('create_db', None) - or not isfile(db_file)): - logger.info('Creating database in "{}"'.format(db_file)) - open(db_file, 'a').close() - SimaDB(db_path=db_file).create_db() - if sopt.options.get('create_db', None): - logger.info('Done, bye...') - sys.exit(0) - - logger.info('Starting...') - sima = core.Sima(config) - - # required core plugins - sima.register_plugin(History) - sima.register_plugin(MpdOptions) - - # Loading internal plugins - load_plugins(sima, 'internal') - - # Loading contrib plugins - load_plugins(sima, 'contrib') - # Run as a daemon - if config.getboolean('daemon', 'daemon'): - if restart: - sima.run() - else: - logger.info('Daemonize process...') - sima.start() - - logger.error('starting') - try: - sima.foreground() - except KeyboardInterrupt: - logger.info('Caught KeyboardInterrupt, stopping') - sys.exit(0) - - -def run(sopt, restart=False): - """ - Handles SigHup exception - Catches Unhandled exception - """ - # pylint: disable=broad-except - try: - start(sopt, restart) - except SigHup as err: # SigHup inherit from Exception - run(sopt, True) - except Exception: # Unhandled exception - exception_log() - -# Script starts here -def main(): - info = dict({'version': core.__version__, - 'prog': 'sima'}) - # StartOpt gathers options from command line call (in StartOpt().options) - sopt = StartOpt(info) - run(sopt) - - -if __name__ == '__main__': - main() - -# VIM MODLINE -# vim: ai ts=4 sw=4 sts=4 expandtab