2013-12-11 15:25:32 +01:00
|
|
|
from docker import Client
|
2014-01-03 12:58:49 +01:00
|
|
|
import errno
|
2013-12-11 15:25:32 +01:00
|
|
|
import logging
|
|
|
|
import os
|
2013-12-19 16:32:24 +01:00
|
|
|
import re
|
2013-12-11 15:25:32 +01:00
|
|
|
import yaml
|
|
|
|
|
2013-12-19 17:55:12 +01:00
|
|
|
from ..project import Project
|
2013-12-11 15:25:32 +01:00
|
|
|
from .docopt_command import DocoptCommand
|
|
|
|
from .formatter import Formatter
|
2013-12-31 13:37:17 +01:00
|
|
|
from .utils import cached_property, docker_url
|
2013-12-11 15:25:32 +01:00
|
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
class Command(DocoptCommand):
|
|
|
|
@cached_property
|
|
|
|
def client(self):
|
2013-12-31 13:37:17 +01:00
|
|
|
return Client(docker_url())
|
2013-12-11 15:25:32 +01:00
|
|
|
|
|
|
|
@cached_property
|
2013-12-19 17:55:12 +01:00
|
|
|
def project(self):
|
2014-01-03 12:58:49 +01:00
|
|
|
try:
|
|
|
|
config = yaml.load(open('fig.yml'))
|
|
|
|
except IOError, e:
|
|
|
|
if e.errno == errno.ENOENT:
|
|
|
|
log.error("Can't find %s. Are you in the right directory?", e.filename)
|
|
|
|
else:
|
|
|
|
log.error(e)
|
|
|
|
|
|
|
|
exit(1)
|
|
|
|
|
2013-12-19 17:55:12 +01:00
|
|
|
return Project.from_config(self.project_name, config, self.client)
|
2013-12-19 16:32:24 +01:00
|
|
|
|
|
|
|
@cached_property
|
2013-12-19 17:55:12 +01:00
|
|
|
def project_name(self):
|
2013-12-19 16:32:24 +01:00
|
|
|
project = os.path.basename(os.getcwd())
|
|
|
|
project = re.sub(r'[^a-zA-Z0-9]', '', project)
|
|
|
|
if not project:
|
|
|
|
project = 'default'
|
|
|
|
return project
|
2013-12-11 15:25:32 +01:00
|
|
|
|
|
|
|
@cached_property
|
|
|
|
def formatter(self):
|
|
|
|
return Formatter()
|
|
|
|
|