command.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from docker import Client
  2. import logging
  3. import os
  4. import re
  5. import yaml
  6. from ..service_collection import ServiceCollection
  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 service_collection(self):
  20. config = yaml.load(open('plum.yml'))
  21. return ServiceCollection.from_config(
  22. config,
  23. client=self.client,
  24. project=self.project
  25. )
  26. @cached_property
  27. def project(self):
  28. project = os.path.basename(os.getcwd())
  29. project = re.sub(r'[^a-zA-Z0-9]', '', project)
  30. if not project:
  31. project = 'default'
  32. return project
  33. @cached_property
  34. def formatter(self):
  35. return Formatter()