Преглед на файлове

Merge pull request #1536 from enkore/f/prip2

ProgressIndicatorPercent / extract minor cosmetic enhancement
enkore преди 8 години
родител
ревизия
1d750e802e
променени са 2 файла, в които са добавени 11 реда и са изтрити 8 реда
  1. 3 3
      src/borg/archiver.py
  2. 8 5
      src/borg/helpers.py

+ 3 - 3
src/borg/archiver.py

@@ -459,10 +459,10 @@ class Archiver:
 
         filter = self.build_filter(matcher, peek_and_store_hardlink_masters, strip_components)
         if progress:
-            progress_logger = logging.getLogger(ProgressIndicatorPercent.LOGGER)
-            progress_logger.info('Calculating size')
+            pi = ProgressIndicatorPercent(msg='Extracting files %5.1f%%', step=0.1)
+            pi.output('Calculating size')
             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:
             pi = None
 

+ 8 - 5
src/borg/helpers.py

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