Show installation instructions if it looks like Docker isn't installed

This commit is contained in:
Aanand Prasad 2014-02-04 15:19:50 -08:00
parent 5126649de4
commit 2bac1c10b0
2 changed files with 30 additions and 2 deletions

View File

@ -11,7 +11,7 @@ import yaml
from ..project import Project
from .docopt_command import DocoptCommand
from .formatter import Formatter
from .utils import cached_property, docker_url, call_silently
from .utils import cached_property, docker_url, call_silently, is_mac, is_ubuntu
from .errors import UserError
log = logging.getLogger(__name__)
@ -23,7 +23,26 @@ class Command(DocoptCommand):
try:
super(Command, self).dispatch(*args, **kwargs)
except ConnectionError:
if call_silently(['which', 'docker-osx']) == 0:
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
""")
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/
""")
else:
raise UserError("""
Couldn't connect to Docker daemon. You might need to install Docker:
http://docs.docker.io/en/latest/installation/
""")
elif call_silently(['which', 'docker-osx']) == 0:
raise UserError("Couldn't connect to Docker daemon - you might need to run `docker-osx shell`.")
else:
raise UserError("""

View File

@ -5,6 +5,7 @@ import datetime
import os
import socket
import subprocess
import platform
from .errors import UserError
@ -117,3 +118,11 @@ def call_silently(*args, **kwargs):
"""
with open(os.devnull, 'w') as shutup:
return subprocess.call(*args, stdout=shutup, stderr=shutup, **kwargs)
def is_mac():
return platform.system() == 'Darwin'
def is_ubuntu():
return platform.system() == 'Linux'