command.py 936 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from docker import Client
  2. import logging
  3. import os
  4. import re
  5. import yaml
  6. from ..project import Project
  7. from .docopt_command import DocoptCommand
  8. from .formatter import Formatter
  9. from .utils import cached_property, mkdir
  10. log = logging.getLogger(__name__)
  11. class Command(DocoptCommand):
  12. @cached_property
  13. def client(self):
  14. if os.environ.get('DOCKER_URL'):
  15. return Client(os.environ['DOCKER_URL'])
  16. else:
  17. return Client()
  18. @cached_property
  19. def project(self):
  20. config = yaml.load(open('fig.yml'))
  21. return Project.from_config(self.project_name, config, self.client)
  22. @cached_property
  23. def project_name(self):
  24. project = os.path.basename(os.getcwd())
  25. project = re.sub(r'[^a-zA-Z0-9]', '', project)
  26. if not project:
  27. project = 'default'
  28. return project
  29. @cached_property
  30. def formatter(self):
  31. return Formatter()