mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
progress: react more reasonably to nested progress topics
Previously, we'd reset the entire progress bar state when a topic was completed, even if it wasn't the outermost progress topic. Now we print the state of the next progress topic on the stack if one is left rather than reset the progress bar.
This commit is contained in:
parent
dde38080ab
commit
caa25014d3
@ -61,6 +61,7 @@ class progbar(object):
|
||||
|
||||
def resetstate(self):
|
||||
self.topics = []
|
||||
self.topicstates = {}
|
||||
self.printed = False
|
||||
self.lastprint = time.time() + float(self.ui.config(
|
||||
'progress', 'delay', default=3))
|
||||
@ -161,17 +162,24 @@ class progbar(object):
|
||||
|
||||
def progress(self, topic, pos, item='', unit='', total=None):
|
||||
if pos is None:
|
||||
if self.topics and self.topics[-1] == topic and self.printed:
|
||||
self.topicstates.pop(topic, None)
|
||||
# reset the progress bar if this is the outermost topic
|
||||
if self.topics and self.topics[0] == topic and self.printed:
|
||||
self.complete()
|
||||
self.resetstate()
|
||||
# truncate the list of topics assuming all topics within
|
||||
# this one are also closed
|
||||
if topic in self.topics:
|
||||
self.topics = self.topics[:self.topics.index(topic)]
|
||||
else:
|
||||
if topic not in self.topics:
|
||||
self.topics.append(topic)
|
||||
now = time.time()
|
||||
if (now - self.lastprint >= self.refresh
|
||||
and topic == self.topics[-1]):
|
||||
self.topicstates[topic] = pos, item, unit, total
|
||||
if now - self.lastprint >= self.refresh and self.topics:
|
||||
self.lastprint = now
|
||||
self.show(topic, pos, item, unit, total)
|
||||
current = self.topics[-1]
|
||||
self.show(current, *self.topicstates[current])
|
||||
|
||||
def uisetup(ui):
|
||||
class progressui(ui.__class__):
|
||||
|
@ -196,13 +196,11 @@ Test convert progress bar'
|
||||
|
||||
converting [=======> ] 1/7
|
||||
scanning paths [ ] 0/1
|
||||
|
||||
getting files [==========================================================>] 1/1
|
||||
|
||||
converting [================> ] 2/7
|
||||
scanning paths [ ] 0/2
|
||||
scanning paths [============================> ] 1/2
|
||||
|
||||
getting files [=============> ] 1/4
|
||||
getting files [============================> ] 2/4
|
||||
getting files [===========================================> ] 3/4
|
||||
@ -210,19 +208,16 @@ Test convert progress bar'
|
||||
|
||||
converting [=========================> ] 3/7
|
||||
scanning paths [ ] 0/1
|
||||
|
||||
getting files [==========================================================>] 1/1
|
||||
|
||||
converting [==================================> ] 4/7
|
||||
scanning paths [ ] 0/1
|
||||
|
||||
getting files [==========================================================>] 1/1
|
||||
|
||||
converting [===========================================> ] 5/7
|
||||
scanning paths [ ] 0/3
|
||||
scanning paths [==================> ] 1/3
|
||||
scanning paths [=====================================> ] 2/3
|
||||
|
||||
getting files [======> ] 1/8
|
||||
getting files [=============> ] 2/8
|
||||
getting files [=====================> ] 3/8
|
||||
@ -234,7 +229,6 @@ Test convert progress bar'
|
||||
|
||||
converting [====================================================> ] 6/7
|
||||
scanning paths [ ] 0/1
|
||||
|
||||
getting files [======> ] 1/8
|
||||
getting files [=============> ] 2/8
|
||||
getting files [=====================> ] 3/8
|
||||
|
Loading…
Reference in New Issue
Block a user