diff --git a/compose/project.py b/compose/project.py index 0f112c9c10..0187aef834 100644 --- a/compose/project.py +++ b/compose/project.py @@ -65,6 +65,17 @@ def update_labels(cls, value, labels): raise ValueError("Invalid value for one_off: {}".format(repr(value))) +def raise_errors(errors): + """ + Raise a dict with error messages as values as a single ProjectError. + """ + if len(errors): + combined_errors = '\n'.join([ + e.decode('utf-8') if isinstance(e, bytes) else e for e in errors.values() + ]) + raise ProjectError(combined_errors) + + class Project: """ A collection of services. @@ -510,11 +521,8 @@ def build_service(service): 'Building', limit=5, ) - if len(errors): - combined_errors = '\n'.join([ - e.decode('utf-8') if isinstance(e, bytes) else e for e in errors.values() - ]) - raise ProjectError(combined_errors) + + raise_errors(errors) else: for service in services: @@ -707,10 +715,8 @@ def get_deps(service): None, get_deps, ) - if errors: - raise ProjectError( - 'Encountered errors while bringing up the project.' - ) + + raise_errors(errors) return [ container @@ -817,11 +823,8 @@ def pull_service(service): log.warning('Some service image(s) must be built from source by running:\n' ' docker-compose build {}' .format(' '.join(must_build))) - if len(errors): - combined_errors = '\n'.join([ - e.decode('utf-8') if isinstance(e, bytes) else e for e in errors.values() - ]) - raise ProjectError(combined_errors) + + raise_errors(errors) def push(self, service_names=None, ignore_push_failures=False): unique_images = set()