| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import unicode_literalsimport osimport platformimport sslimport subprocessfrom docker import version as docker_py_versionfrom six.moves import inputfrom .. import __version__def yesno(prompt, default=None):    """    Prompt the user for a yes or no.    Can optionally specify a default value, which will only be    used if they enter a blank line.    Unrecognised input (anything other than "y", "n", "yes",    "no" or "") will return None.    """    answer = input(prompt).strip().lower()    if answer == "y" or answer == "yes":        return True    elif answer == "n" or answer == "no":        return False    elif answer == "":        return default    else:        return Nonedef call_silently(*args, **kwargs):    """    Like subprocess.call(), but redirects stdout and stderr to /dev/null.    """    with open(os.devnull, 'w') as shutup:        try:            return subprocess.call(*args, stdout=shutup, stderr=shutup, **kwargs)        except WindowsError:            # On Windows, subprocess.call() can still raise exceptions. Normalize            # to POSIXy behaviour by returning a nonzero exit code.            return 1def is_mac():    return platform.system() == 'Darwin'def is_ubuntu():    return platform.system() == 'Linux' and platform.linux_distribution()[0] == 'Ubuntu'def get_version_info(scope):    versioninfo = 'docker-compose version: %s' % __version__    if scope == 'compose':        return versioninfo    elif scope == 'full':        return versioninfo + '\n' \            + "docker-py version: %s\n" % docker_py_version \            + "%s version: %s\n" % (platform.python_implementation(), platform.python_version()) \            + "OpenSSL version: %s" % ssl.OPENSSL_VERSION    else:        raise RuntimeError('passed unallowed value to `cli.utils.get_version_info`')
 |