]> kaliko git repositories - mpd-sima.git/blob - launch
5c50ef12467c0a4cc4078c09a2dbbfff605db9ba
[mpd-sima.git] / launch
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 """Sima
4 """
5
6 import logging
7 import sys
8
9 from os.path import isfile
10 ##
11
12 from sima import core
13 from sima.plugins.crop import Crop
14 from sima.plugins.addhist import History
15 from sima.lib.logger import set_logger
16 from sima.lib.simadb import SimaDB
17 from sima.utils.config import ConfMan
18 from sima.utils.startopt import StartOpt
19 from sima.utils.utils import exception_log
20 ##
21
22
23 def main():
24     """Entry point, deal w/ CLI and starts application
25     """
26     info = dict({'version': core.__version__,})
27     # StartOpt gathers options from command line call (in StartOpt().options)
28     sopt = StartOpt(info)
29     # set logger
30     verbosity = sopt.options.get('verbosity', 'warning')
31     cli_loglevel = getattr(logging, verbosity.upper())
32     set_logger(level=verbosity)
33     logger = logging.getLogger('sima')
34     logger.setLevel(cli_loglevel)
35     # loads configuration
36     conf_manager = ConfMan(logger, sopt.options)
37     config = conf_manager.config
38     logger.setLevel(getattr(logging,
39                     config.get('log', 'verbosity').upper()))  # pylint: disable=E1103
40
41     logger.debug('Command line say: {0}'.format(sopt.options))
42
43     # Create Database
44     if (sopt.options.get('create_db', None)
45        or not isfile(conf_manager.db_file)):
46         logger.info('Creating database in "{}"'.format(conf_manager.db_file))
47         open(conf_manager.db_file, 'a').close()
48         SimaDB(db_path=conf_manager.db_file).create_db()
49         if sopt.options.get('create_db', None):
50             logger.info('Done, bye...')
51             sys.exit(0)
52
53     logger.info('Starting...')
54     sima = core.Sima(config, conf_manager.db_file)
55     sima.register_plugin(Crop)
56     sima.register_plugin(History)
57     try:
58         sima.run()
59     except KeyboardInterrupt:
60         logger.info('Caught KeyboardInterrupt, stopping')
61         sima.shutdown()
62
63
64 # Script starts here
65 if __name__ == '__main__':
66     # pylint: disable=broad-except
67     try:
68         main()
69     except Exception:
70         exception_log()
71
72
73 # VIM MODLINE
74 # vim: ai ts=4 sw=4 sts=4 expandtab