diff options
author | Ben Firshman <ben@firshman.co.uk> | 2014-02-27 19:16:38 +0000 |
---|---|---|
committer | Ben Firshman <ben@firshman.co.uk> | 2014-02-27 19:16:38 +0000 |
commit | 3ed9e16558ca89096a3ff3ed0e1125f94657064f (patch) | |
tree | 4317103b4c103684b6cd354ad82d35bf0fb14ca4 | |
parent | 07fd01ad46baf363d4e1d6cd29937ca730fe8901 (diff) | |
parent | ff1496a6a5e148a1ae06822c46d83184ad3f48fe (diff) |
Merge pull request #114 from orchardup/refactor-errors
Extract error text into errors.py
-rw-r--r-- | fig/cli/command.py | 37 | ||||
-rw-r--r-- | fig/cli/errors.py | 50 |
2 files changed, 59 insertions, 28 deletions
diff --git a/fig/cli/command.py b/fig/cli/command.py index 5ac0b48f..62a8a6f1 100644 --- a/fig/cli/command.py +++ b/fig/cli/command.py @@ -15,7 +15,7 @@ from ..service import ConfigError from .docopt_command import DocoptCommand from .formatter import Formatter from .utils import cached_property, docker_url, call_silently, is_mac, is_ubuntu -from .errors import UserError +from . import errors log = logging.getLogger(__name__) @@ -28,31 +28,15 @@ class Command(DocoptCommand): except ConnectionError: if call_silently(['which', 'docker']) != 0: if is_mac(): - raise UserError(""" -Couldn't connect to Docker daemon. You might need to install docker-osx: - -https://github.com/noplay/docker-osx -""") + raise errors.DockerNotFoundMac() elif is_ubuntu(): - raise UserError(""" -Couldn't connect to Docker daemon. You might need to install Docker: - -http://docs.docker.io/en/latest/installation/ubuntulinux/ -""") + raise errors.DockerNotFoundUbuntu() else: - raise UserError(""" -Couldn't connect to Docker daemon. You might need to install Docker: - -http://docs.docker.io/en/latest/installation/ -""") + raise errors.DockerNotFoundGeneric() elif call_silently(['which', 'docker-osx']) == 0: - raise UserError("Couldn't connect to Docker daemon - you might need to run `docker-osx shell`.") + raise errors.ConnectionErrorDockerOSX() else: - raise UserError(""" -Couldn't connect to Docker daemon at %s - is it running? - -If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable. -""" % self.client.base_url) + raise errors.ConnectionErrorGeneric(self.client.base_url) @cached_property def client(self): @@ -66,16 +50,13 @@ If it's at a non-standard location, specify the URL with the DOCKER_HOST environ except IOError as e: if e.errno == errno.ENOENT: - log.error("Can't find %s. Are you in the right directory?", os.path.basename(e.filename)) - else: - log.error(e) - - sys.exit(1) + raise errors.FigFileNotFound(os.path.basename(e.filename)) + raise errors.UserError(six.text_type(e)) try: return Project.from_config(self.project_name, config, self.client) except ConfigError as e: - raise UserError(six.text_type(e)) + raise errors.UserError(six.text_type(e)) @cached_property def project_name(self): diff --git a/fig/cli/errors.py b/fig/cli/errors.py index 874d3591..71a07403 100644 --- a/fig/cli/errors.py +++ b/fig/cli/errors.py @@ -8,3 +8,53 @@ class UserError(Exception): def __unicode__(self): return self.msg + + +class DockerNotFoundMac(UserError): + def __init__(self): + super(DockerNotFoundMac, self).__init__(""" + Couldn't connect to Docker daemon. You might need to install docker-osx: + + https://github.com/noplay/docker-osx + """) + + +class DockerNotFoundUbuntu(UserError): + def __init__(self): + super(DockerNotFoundUbuntu, self).__init__(""" + Couldn't connect to Docker daemon. You might need to install Docker: + + http://docs.docker.io/en/latest/installation/ubuntulinux/ + """) + + +class DockerNotFoundGeneric(UserError): + def __init__(self): + super(DockerNotFoundGeneric, self).__init__(""" + Couldn't connect to Docker daemon. You might need to install Docker: + + http://docs.docker.io/en/latest/installation/ + """) + + +class ConnectionErrorDockerOSX(UserError): + def __init__(self): + super(ConnectionErrorDockerOSX, self).__init__(""" + Couldn't connect to Docker daemon - you might need to run `docker-osx shell`. + """) + + +class ConnectionErrorGeneric(UserError): + def __init__(self, url): + super(ConnectionErrorGeneric, self).__init__(""" + Couldn't connect to Docker daemon at %s - is it running? + + If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable. + """ % url) + + +class FigFileNotFound(UserError): + def __init__(self, filename): + super(FigFileNotFound, self).__init__(""" + Can't find %s. Are you in the right directory? + """ % filename) |