mirror of
				https://github.com/docker/compose.git
				synced 2025-11-04 13:44:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import unicode_literals
 | 
						|
from __future__ import absolute_import
 | 
						|
from __future__ import division
 | 
						|
import datetime
 | 
						|
import os
 | 
						|
import subprocess
 | 
						|
import platform
 | 
						|
 | 
						|
 | 
						|
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 = 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/5164027
 | 
						|
def 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 path
 | 
						|
 | 
						|
 | 
						|
def 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 buffered
 | 
						|
 | 
						|
 | 
						|
def 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'
 |