Add "fig build" command

This commit is contained in:
Ben Firshman 2014-01-02 15:28:33 +00:00
parent 853d8ad280
commit a39db86651
3 changed files with 20 additions and 1 deletions

View File

@ -71,6 +71,7 @@ class TopLevelCommand(Command):
--version Print version and exit
Commands:
build Build or rebuild services
kill Kill containers
logs View output from containers
ps List containers
@ -86,6 +87,14 @@ class TopLevelCommand(Command):
options['version'] = "fig %s" % __version__
return options
def build(self, options):
"""
Build or rebuild services.
Usage: build [SERVICE...]
"""
self.project.build(service_names=options['SERVICE'])
def kill(self, options):
"""
Kill containers.

View File

@ -93,6 +93,13 @@ class Project(object):
for service in self.get_services(service_names):
service.kill(**options)
def build(self, service_names=None, **options):
for service in self.get_services(service_names):
if service.can_be_built():
service.build(**options)
else:
log.info('%s uses an image, skipping')
def remove_stopped(self, service_names=None, **options):
for service in self.get_services(service_names):
service.remove_stopped(**options)

View File

@ -137,7 +137,7 @@ class Service(object):
if 'volumes' in container_options:
container_options['volumes'] = dict((v.split(':')[1], {}) for v in container_options['volumes'])
if 'build' in self.options:
if self.can_be_built():
if len(self.client.images(name=self._build_tag_name())) == 0:
self.build()
container_options['image'] = self._build_tag_name()
@ -167,6 +167,9 @@ class Service(object):
return image_id
def can_be_built(self):
return 'build' in self.options
def _build_tag_name(self):
"""
The tag to give to images built for this service.