diff --git a/fs_uae_wrapper/base.py b/fs_uae_wrapper/base.py index 12a725b..a33cf57 100644 --- a/fs_uae_wrapper/base.py +++ b/fs_uae_wrapper/base.py @@ -177,14 +177,34 @@ class Base(object): needed to calculate new paths so that emulator can find assets. """ exclude_list = ['save_states_dir'] + include_list = ['wrapper_archive', 'accelerator_rom', 'base_dir', + 'cdrom_drive_0', 'cdroms_dir', 'controllers_dir', + 'cpuboard_flash_ext_file', 'cpuboard_flash_file', + 'floppies_dir', 'floppy_overlays_dir', 'fmv_rom', + 'graphics_card_rom', 'hard_drives_dir', + 'kickstart_file', 'kickstarts_dir', 'logs_dir', + 'screenshots_output_dir', 'state_dir'] + for num in range(20): + include_list.append('cdrom_image_%d' % num) + include_list.append('floppy_image_%d' % num) + + for num in range(4): + include_list.append('floppy_drive_%d' % num) + + for num in range(10): + include_list.append('hard_drive_%d' % num) + conf_abs_dir = os.path.dirname(os.path.abspath(self.conf_file)) changed_options = {} for key, val in utils.get_config(self.conf_file).items(): - if val.startswith('/'): + if key in exclude_list: continue - if key in exclude_list: + if key not in include_list: + continue + + if val.startswith('/'): continue if val.startswith('$CONFIG'): diff --git a/fs_uae_wrapper/wrapper.py b/fs_uae_wrapper/wrapper.py index 5bdb408..514c292 100644 --- a/fs_uae_wrapper/wrapper.py +++ b/fs_uae_wrapper/wrapper.py @@ -4,6 +4,7 @@ Wrapper for FS-UAE to perform some actions before and or after running the emulator, if appropriate option is enabled. """ import importlib +import logging import os import sys @@ -11,6 +12,25 @@ from fs_uae_wrapper import utils from fs_uae_wrapper import WRAPPER_KEY +def setup_logger(options): + """Setup logger format and level""" + + level = logging.WARNING + + if options['wrapper_quiet']: + level = logging.ERROR + if options['wrapper_quiet'] > 1: + level = logging.CRITICAL + + if options['wrapper_verbose']: + level = logging.INFO + if options['wrapper_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 @@ -18,7 +38,16 @@ def parse_args(): """ fs_conf = None options = utils.CmdOption() + options['wrapper_verbose'] = 0 + options['wrapper_quiet'] = 0 + for parameter in sys.argv[1:]: + if parameter in ['-v', '-q']: + if parameter == '-v': + options['wrapper_verbose'] += 1 + if parameter == '-q': + options['wrapper_quiet'] += 1 + continue try: options.add(parameter) except AttributeError: @@ -47,6 +76,9 @@ def usage(): def run(): """run wrapper module""" config_file, fsuae_options = parse_args() + setup_logger(fsuae_options) + del fsuae_options['wrapper_verbose'] + del fsuae_options['wrapper_quiet'] if 'help' in fsuae_options: usage() diff --git a/tests/test_base.py b/tests/test_base.py index 80fd972..58f8875 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -57,10 +57,10 @@ class TestBase(TestCase): self.assertDictEqual(bobj.fsuae_options, {}) os.chdir(self.dirname) - get_config.return_value = {'foo': 'bar'} + get_config.return_value = {'fmv_rom': 'bar'} bobj._normalize_options() self.assertDictEqual(bobj.fsuae_options, - {'foo': os.path.join(self.dirname, 'bar')}) + {'fmv_rom': os.path.join(self.dirname, 'bar')}) get_config.return_value = {'floppies_dir': '../some/path'} bobj.fsuae_options = utils.CmdOption() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 9929754..10cd0cc 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -67,11 +67,13 @@ class TestWrapper(TestCase): def test_parse_args(self): # Looking for configuration file... first, we have nothing - self.assertEqual(wrapper.parse_args(), (None, {})) + self.assertEqual(wrapper.parse_args(), + (None, {'wrapper_verbose': 0, 'wrapper_quiet': 0})) # still no luck - nonexistent file sys.argv.append('there-is-no-config.fs-uae') - self.assertEqual(wrapper.parse_args(), (None, {})) + self.assertEqual(wrapper.parse_args(), + (None, {'wrapper_verbose': 0, 'wrapper_quiet': 0})) # lets make it os.chdir(self.dirname) @@ -79,7 +81,8 @@ class TestWrapper(TestCase): fobj.write('\n') self.assertEqual(wrapper.parse_args(), - ('there-is-no-config.fs-uae', {})) + ('there-is-no-config.fs-uae', + {'wrapper_verbose': 0, 'wrapper_quiet': 0})) # remove argument, try to find default one sys.argv.pop() @@ -88,7 +91,9 @@ class TestWrapper(TestCase): with open('Config.fs-uae', 'w') as fobj: fobj.write('\n') - self.assertEqual(wrapper.parse_args(), ('Config.fs-uae', {})) + self.assertEqual(wrapper.parse_args(), + ('Config.fs-uae', + {'wrapper_verbose': 0, 'wrapper_quiet': 0})) # add --wrapper-foo and --wrapper-bar options sys.argv.extend(['--wrapper=plain', '--wrapper_foo=1', @@ -104,7 +109,9 @@ class TestWrapper(TestCase): self.assertEqual(conf, 'Config.fs-uae') self.assertDictEqual(fsopts, {'wrapper': 'plain', 'wrapper_foo': '1', - 'wrapper_bar': 'false'}) + 'wrapper_bar': 'false', + 'wrapper_verbose': 0, + 'wrapper_quiet': 0}) # mix wrapper* params in commandline and config sys.argv = ['fs-uae-wrapper', @@ -120,4 +127,6 @@ class TestWrapper(TestCase): self.assertDictEqual(fsopts, {'wrapper': 'plain', 'wrapper_bar': 'false', 'fullscreen': '1', - 'fast_memory': '4096'}) + 'fast_memory': '4096', + 'wrapper_verbose': 0, + 'wrapper_quiet': 0})