1
0
mirror of https://github.com/gryf/e-uae-wrapper.git synced 2026-02-07 09:35:45 +01:00
Files
e-uae-wrapper/e_uae_wrapper/wrapper.py
2018-02-15 17:50:04 +01:00

88 lines
2.2 KiB
Python

#!/usr/bin/env python
"""
Wrapper for e-uae to perform some actions before and or after running the
emulator, if appropriate option is enabled.
"""
import argparse
import importlib
import logging
import os
import sys
from e_uae_wrapper import utils
from e_uae_wrapper import WRAPPER_KEY
def setup_logger(args):
"""Setup logger format and level"""
level = logging.WARNING
if args.quiet:
level = logging.ERROR
if args.quiet > 1:
level = logging.CRITICAL
if args.verbose:
level = logging.INFO
if args.verbose > 1:
level = logging.DEBUG
logging.basicConfig(level=level,
format="%(asctime)s %(levelname)s: %(message)s")
def parse_args():
"""
Look out for config file and for config options which would be blindly
passed to e-uae.
"""
parser = argparse.ArgumentParser()
parser.add_argument('config', help='Configuration file for e-uae.')
parser.add_argument('-v', '--verbose', help='Be verbose. Adding more "v" '
'will increase verbosity', action="count",
default=None)
parser.add_argument('-q', '--quiet', help='Be quiet. Adding more "q" will'
' decrease verbosity', action="count", default=None)
args = parser.parse_args()
setup_logger(args)
logging.debug("args: %s", args)
return args
def run():
"""run wrapper module"""
args = parse_args()
configuration = utils.load_conf(args.config)
if not configuration:
logging.error('Error: Configuration file have syntax issues')
sys.exit(2)
wrapper_module = configuration.get(WRAPPER_KEY, 'plain')
try:
wrapper = importlib.import_module('e_uae_wrapper.' +
wrapper_module)
except ImportError:
logging.error("Error: provided wrapper module: `%s' doesn't "
"exists.", wrapper_module)
sys.exit(3)
runner = wrapper.Wrapper(os.path.abspath(args.config), configuration)
try:
exit_code = runner.run()
finally:
runner.clean()
if not exit_code:
sys.exit(4)
if __name__ == "__main__":
run()