summaryrefslogtreecommitdiff
path: root/compose/parallel.py
diff options
context:
space:
mode:
authorEvan Shaw <evan@vendhq.com>2017-02-25 13:48:02 +1300
committerJoffrey F <f.joffrey@gmail.com>2017-07-03 16:24:07 -0700
commit9cdbb953ba627280770341eb48eecf17fdfdfe28 (patch)
treebee2a7c6cc45756e0e66cb87543489181f5dc58e /compose/parallel.py
parent259b96748c48748627873852c9f30efd7a69d3a1 (diff)
Align status output for parallel_execute
Previously docker-compose would output lines that looked like: Starting service ... done Starting short ... Starting service-with-a-long-name ... done It's difficult to scan down this output and get an idea of what's happening. Now the statuses are aligned, and output looks like this: Starting service ... done Starting short ... Starting service-with-a-long-name ... done To me, this is quite a bit easier to read. Signed-off-by: Evan Shaw <evan@vendhq.com>
Diffstat (limited to 'compose/parallel.py')
-rw-r--r--compose/parallel.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/compose/parallel.py b/compose/parallel.py
index 34fef71d..a611fd6e 100644
--- a/compose/parallel.py
+++ b/compose/parallel.py
@@ -38,7 +38,8 @@ def parallel_execute(objects, func, get_name, msg, get_deps=None, limit=None):
writer = ParallelStreamWriter(stream, msg)
for obj in objects:
- writer.initialize(get_name(obj))
+ writer.add_object(get_name(obj))
+ writer.write_initial()
events = parallel_execute_iter(objects, func, get_deps, limit)
@@ -224,12 +225,18 @@ class ParallelStreamWriter(object):
self.stream = stream
self.msg = msg
self.lines = []
+ self.width = 0
- def initialize(self, obj_index):
+ def add_object(self, obj_index):
+ self.lines.append(obj_index)
+ self.width = max(self.width, len(obj_index))
+
+ def write_initial(self):
if self.msg is None:
return
- self.lines.append(obj_index)
- self.stream.write("{} {} ... \r\n".format(self.msg, obj_index))
+ for line in self.lines:
+ self.stream.write("{} {:<{width}} ... \r\n".format(self.msg, line,
+ width=self.width))
self.stream.flush()
def write(self, obj_index, status):
@@ -241,7 +248,8 @@ class ParallelStreamWriter(object):
self.stream.write("%c[%dA" % (27, diff))
# erase
self.stream.write("%c[2K\r" % 27)
- self.stream.write("{} {} ... {}\r".format(self.msg, obj_index, status))
+ self.stream.write("{} {:<{width}} ... {}\r".format(self.msg, obj_index,
+ status, width=self.width))
# move back down
self.stream.write("%c[%dB" % (27, diff))
self.stream.flush()