From efa38d2449c6e390890ba8850fea21f147af3c89 Mon Sep 17 00:00:00 2001 From: Johannes Knutsen Date: Thu, 9 Jun 2011 20:03:02 +0200 Subject: [PATCH] Read interactive settings optional by adding --interactive option --- mopidy/core.py | 9 ++++++--- mopidy/utils/settings.py | 5 +++-- tests/help_test.py | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mopidy/core.py b/mopidy/core.py index ca5b92a1..e8857b94 100644 --- a/mopidy/core.py +++ b/mopidy/core.py @@ -30,7 +30,7 @@ logger = logging.getLogger('mopidy.core') def main(): options = parse_options() setup_logging(options.verbosity_level, options.save_debug_log) - setup_settings() + setup_settings(options.interactive) setup_gobject_loop() setup_gstreamer() setup_mixer() @@ -49,6 +49,9 @@ def parse_options(): parser.add_option('--help-gst', action='store_true', dest='help_gst', help='show GStreamer help options') + parser.add_option('-i', '--interactive', + action='store_true', dest='interactive', + help='ask interactively for required settings which is missing') parser.add_option('-q', '--quiet', action='store_const', const=0, dest='verbosity_level', help='less output (warning level)') @@ -63,11 +66,11 @@ def parse_options(): help='list current settings') return parser.parse_args(args=mopidy_args)[0] -def setup_settings(): +def setup_settings(interactive): get_or_create_folder('~/.mopidy/') get_or_create_file('~/.mopidy/settings.py') try: - settings.validate() + settings.validate(interactive) except SettingsError, e: logger.error(e.message) sys.exit(1) diff --git a/mopidy/utils/settings.py b/mopidy/utils/settings.py index 9516b334..a5b3bed2 100644 --- a/mopidy/utils/settings.py +++ b/mopidy/utils/settings.py @@ -17,7 +17,6 @@ class SettingsProxy(object): self.default = self._get_settings_dict_from_module( default_settings_module) self.local = self._get_local_settings() - self._read_missing_settings_from_stdin(self.default, self.local) self.runtime = {} def _read_missing_settings_from_stdin(self, default, local): @@ -79,7 +78,9 @@ class SettingsProxy(object): else: super(SettingsProxy, self).__setattr__(attr, value) - def validate(self): + def validate(self, interactive): + if interactive: + self._read_missing_settings_from_stdin(self.default, self.local) if self.get_errors(): logger.error(u'Settings validation errors: %s', indent(self.get_errors_as_string())) diff --git a/tests/help_test.py b/tests/help_test.py index dccccc9c..25f534c2 100644 --- a/tests/help_test.py +++ b/tests/help_test.py @@ -14,6 +14,7 @@ class HelpTest(unittest.TestCase): self.assert_('--version' in output) self.assert_('--help' in output) self.assert_('--help-gst' in output) + self.assert_('--interactive' in output) self.assert_('--quiet' in output) self.assert_('--verbose' in output) self.assert_('--save-debug-log' in output)