Forráskód Böngészése

implement counters for Include/ExcludePatterns

Thomas Waldmann 9 éve
szülő
commit
08417b52ec
1 módosított fájl, 13 hozzáadás és 2 törlés
  1. 13 2
      borg/helpers.py

+ 13 - 2
borg/helpers.py

@@ -242,6 +242,7 @@ def normalized(func):
         # always have to enter an exact match
         return func
 
+
 class IncludePattern:
     """Literal files or directories listed on the command line
     for some operations (e.g. extract, but not create).
@@ -249,6 +250,8 @@ class IncludePattern:
     path match as well.  A trailing slash makes no difference.
     """
     def __init__(self, pattern):
+        self.match_count = 0
+
         if sys.platform in ('darwin',):
             pattern = unicodedata.normalize("NFD", pattern)
 
@@ -256,7 +259,10 @@ class IncludePattern:
 
     @normalized
     def match(self, path):
-        return (path+os.path.sep).startswith(self.pattern)
+        matches = (path+os.path.sep).startswith(self.pattern)
+        if matches:
+            self.match_count += 1
+        return matches
 
     def __repr__(self):
         return '%s(%s)' % (type(self), self.pattern)
@@ -267,6 +273,8 @@ class ExcludePattern(IncludePattern):
     exclude the contents of a directory, but not the directory itself.
     """
     def __init__(self, pattern):
+        self.match_count = 0
+
         if pattern.endswith(os.path.sep):
             self.pattern = os.path.normpath(pattern).rstrip(os.path.sep)+os.path.sep+'*'+os.path.sep
         else:
@@ -281,7 +289,10 @@ class ExcludePattern(IncludePattern):
 
     @normalized
     def match(self, path):
-        return self.regex.match(path+os.path.sep) is not None
+        matches = self.regex.match(path+os.path.sep) is not None
+        if matches:
+            self.match_count += 1
+        return matches
 
     def __repr__(self):
         return '%s(%s)' % (type(self), self.pattern)