summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Firshman <ben@firshman.co.uk>2014-02-27 19:16:38 +0000
committerBen Firshman <ben@firshman.co.uk>2014-02-27 19:16:38 +0000
commit3ed9e16558ca89096a3ff3ed0e1125f94657064f (patch)
tree4317103b4c103684b6cd354ad82d35bf0fb14ca4
parent07fd01ad46baf363d4e1d6cd29937ca730fe8901 (diff)
parentff1496a6a5e148a1ae06822c46d83184ad3f48fe (diff)
Merge pull request #114 from orchardup/refactor-errors
Extract error text into errors.py
-rw-r--r--fig/cli/command.py37
-rw-r--r--fig/cli/errors.py50
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)