Merge pull request #1536 from enkore/f/prip2

ProgressIndicatorPercent / extract minor cosmetic enhancement
This commit is contained in:
enkore 2016-08-27 00:36:43 +02:00 committed by GitHub
commit 1d750e802e
2 changed files with 11 additions and 8 deletions

View File

@ -459,10 +459,10 @@ class Archiver:
filter = self.build_filter(matcher, peek_and_store_hardlink_masters, strip_components) filter = self.build_filter(matcher, peek_and_store_hardlink_masters, strip_components)
if progress: if progress:
progress_logger = logging.getLogger(ProgressIndicatorPercent.LOGGER) pi = ProgressIndicatorPercent(msg='Extracting files %5.1f%%', step=0.1)
progress_logger.info('Calculating size') pi.output('Calculating size')
extracted_size = sum(item.file_size(hardlink_masters) for item in archive.iter_items(filter)) extracted_size = sum(item.file_size(hardlink_masters) for item in archive.iter_items(filter))
pi = ProgressIndicatorPercent(total=extracted_size, msg='Extracting files %5.1f%%', step=0.1) pi.total = extracted_size
else: else:
pi = None pi = None

View File

@ -1107,7 +1107,7 @@ def yes(msg=None, false_msg=None, true_msg=None, default_msg=None,
class ProgressIndicatorPercent: class ProgressIndicatorPercent:
LOGGER = 'borg.output.progress' LOGGER = 'borg.output.progress'
def __init__(self, total, step=5, start=0, msg="%3.0f%%"): def __init__(self, total=0, step=5, start=0, msg="%3.0f%%"):
""" """
Percentage-based progress indicator Percentage-based progress indicator
@ -1121,6 +1121,7 @@ class ProgressIndicatorPercent:
self.trigger_at = start # output next percentage value when reaching (at least) this self.trigger_at = start # output next percentage value when reaching (at least) this
self.step = step self.step = step
self.msg = msg self.msg = msg
self.output_len = len(self.msg % 100.0)
self.handler = None self.handler = None
self.logger = logging.getLogger(self.LOGGER) self.logger = logging.getLogger(self.LOGGER)
@ -1154,13 +1155,15 @@ class ProgressIndicatorPercent:
def show(self, current=None, increase=1): def show(self, current=None, increase=1):
pct = self.progress(current, increase) pct = self.progress(current, increase)
if pct is not None: if pct is not None:
return self.output(pct) return self.output(self.msg % pct)
def output(self, percent): def output(self, message):
self.logger.info(self.msg % percent) self.output_len = max(len(message), self.output_len)
message = message.ljust(self.output_len)
self.logger.info(message)
def finish(self): def finish(self):
self.logger.info(" " * len(self.msg % 100.0)) self.output('')
class ProgressIndicatorEndless: class ProgressIndicatorEndless: