Improve error when service is not a dict

Fixes #127
This commit is contained in:
Ben Firshman 2014-03-03 16:21:42 +00:00
commit 3e7360c2c6
3 changed files with 31 additions and 4 deletions

View file

@ -8,7 +8,7 @@ import signal
from inspect import getdoc
from .. import __version__
from ..project import NoSuchService, DependencyError
from ..project import NoSuchService, ConfigurationError
from ..service import CannotBeScaledError
from .command import Command
from .formatter import Formatter
@ -40,7 +40,7 @@ def main():
except KeyboardInterrupt:
log.error("\nAborting.")
sys.exit(1)
except (UserError, NoSuchService, DependencyError) as e:
except (UserError, NoSuchService, ConfigurationError) as e:
log.error(e.msg)
sys.exit(1)
except NoSuchCommand as e:

View file

@ -67,6 +67,8 @@ class Project(object):
def from_config(cls, name, config, client):
dicts = []
for service_name, service in list(config.items()):
if not isinstance(service, dict):
raise ConfigurationError('Service "%s" doesn\'t have any configuration options. All top level keys in your fig.yml must map to a dictionary of configuration options.')
service['name'] = service_name
dicts.append(service)
return cls.from_dicts(name, dicts, client)
@ -156,9 +158,13 @@ class NoSuchService(Exception):
return self.msg
class DependencyError(Exception):
class ConfigurationError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
class DependencyError(ConfigurationError):
pass