| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | from __future__ import unicode_literalsfrom __future__ import absolute_importfrom __future__ import divisionimport datetimeimport osimport subprocessimport platformdef 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 = raw_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 None# http://stackoverflow.com/a/5164027def prettydate(d):    diff = datetime.datetime.utcnow() - d    s = diff.seconds    if diff.days > 7 or diff.days < 0:        return d.strftime('%d %b %y')    elif diff.days == 1:        return '1 day ago'    elif diff.days > 1:        return '{0} days ago'.format(diff.days)    elif s <= 1:        return 'just now'    elif s < 60:        return '{0} seconds ago'.format(s)    elif s < 120:        return '1 minute ago'    elif s < 3600:        return '{0} minutes ago'.format(s / 60)    elif s < 7200:        return '1 hour ago'    else:        return '{0} hours ago'.format(s / 3600)def mkdir(path, permissions=0o700):    if not os.path.exists(path):        os.mkdir(path)    os.chmod(path, permissions)    return pathdef docker_url():    return os.environ.get('DOCKER_HOST')def split_buffer(reader, separator):    """    Given a generator which yields strings and a separator string,    joins all input, splits on the separator and yields each chunk.    Unlike string.split(), each chunk includes the trailing    separator, except for the last one if none was found on the end    of the input.    """    buffered = str('')    separator = str(separator)    for data in reader:        buffered += data        while True:            index = buffered.find(separator)            if index == -1:                break            yield buffered[:index + 1]            buffered = buffered[index + 1:]    if len(buffered) > 0:        yield buffereddef call_silently(*args, **kwargs):    """    Like subprocess.call(), but redirects stdout and stderr to /dev/null.    """    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' and platform.linux_distribution()[0] == 'Ubuntu'
 |